Eine Technik, die in einem bestimmten OSS zu finden ist.
bs = BookShelf('Einführung in XX', 'Zum ersten Mal YY', 'ZZ Ich kann nicht mehr hören')
bs.map_(lambda: print(this))
stdout
Einführung in XX
Zum ersten Mal YY
ZZ Ich kann nicht mehr hören
"Das", das plötzlich auftauchte. Woher kam das?
Ich habe daran gearbeitet, bevor ich den Rückruf angerufen habe.
class Book:
def __init__(self, name):
self._name = name
def __str__(self):
return self._name
class BookShelf:
def __init__(self, *book_names):
self._books = [*map(Book, book_names)]
def map_(self, callback):
for book in self._books:
callback.__globals__['this'] = book
callback()
del callback.__globals__['this']
Es ist keine große Sache, wenn Sie es verstehen, Ich war eine Weile besorgt, weil ich an der Erweiterung des Dolmetschers und der IDE zweifelte.
Ich denke, es ist pythonisch, es als Argument wie dieses zu übergeben:
class BookShelf:
def __init__(self, *book_names):
self._books = [*map(Book, book_names)]
def map_(self, callback):
for book in self._books:
callback(book)
bs = BookShelf('Einführung in XX', 'Zum ersten Mal YY', 'ZZ Ich kann nicht mehr hören')
bs.map_(lambda this: print(this))
Ich möchte mich gut um Zen of Python kümmern.
Explicit is better than implicit. Es ist besser zu klären als zu implizieren.
** Referenz **: Qiita - Das Zen von Python
Recommended Posts