Отказ от ответственностиЭто просто упражнение в метапрограммировании, оно не имеет практического значения. цель.
Я назначил методы __getitem__
и __getattr__
объекту функции, но
нет никакого эффекта...
def foo():
print "foo!"
foo.__getitem__ = lambda name: name
foo.__getattr__ = lambda name: name
foo.baz = 'baz'
Проверка работоспособности, что мы можемназначать свойства функции:
>>> foo.baz
'baz'
Аккуратно. Как насчет "волшебных добытчиков"?
>>> foo.bar
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'function' object has no attribute 'bar'
>>> foo['foo']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'function' object is not subscriptable
>>> getattr(foo, 'bar')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'function' object has no attribute 'bar'
Возможно ли иметь «магический геттер» для функционального объекта?