Python 有一个神奇的__getattr__
方法,允许返回自定义值:
class A(object):
def __getattr__(self, name):
return name
B = A()
print B.foo # 'foo'
但是,调用A.foo
没有类似的效果,因为 A 不是实例。
使用 metaclasses,Google App Engine 会在实例化时引发此错误:
File "/base/python27_runtime/python27_lib/versions/1/google/appengine/ext/db/__init__.py", line 913, in __init__
key_name.__class__.__name__)
BadKeyError: Name must be string type, not tuple
假设引用的问题已正确实现,魔术类还有哪些其他方法可以__getattr__
实现?