我想定义一个类,它可以为从它请求的任何属性返回一些东西,这可能吗? 例如
class AnyAttr(object):
def __init__(self):
<somehow return the attr str for any str>
aa = AnyAttr()
print aa.cat
print aa.dog
Out [1]: 'cat', 'dog'
当然,它应该能够返回其他内容,例如在不同的字典中查找它们并返回它找到的内容或默认值。 有什么办法可以做到吗?
是的,您可以通过实现__getattribute__
方法来做到这一点。但是,您可能不希望对生产中使用的代码执行此操作;-(
#!/usr/bin/env python3
class AnyAttr(object):
def __getattribute__(self, attribute):
return str(attribute)
aa = AnyAttr()
print(aa.cat) # yields 'cat'
print(aa.dog) # yields 'dog'