小编col*_*nta的帖子

在函数上定义__getattr__和__getitem__无效

免责声明这只是元编程的练习,没有实际意义.

我分配__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)

python metaprogramming

7
推荐指数
1
解决办法
3663
查看次数

标签 统计

metaprogramming ×1

python ×1