免责声明这只是元编程的练习,没有实际意义.
我分配__getitem__和__getattr__函数对象的方法,但没有效果...
def foo():
print "foo!"
foo.__getitem__ = lambda name: name
foo.__getattr__ = lambda name: name
foo.baz = 'baz'
Run Code Online (Sandbox Code Playgroud)
我们可以为函数指定属性的完整性检查:
>>> foo.baz
'baz'
Run Code Online (Sandbox Code Playgroud)
整齐."神奇的吸气者"怎么样?
>>> 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>", …Run Code Online (Sandbox Code Playgroud)