如何永远不会有 python 对象的属性错误



我想定义一个类,它可以为从它请求的任何属性返回一些东西,这可能吗? 例如

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'

最新更新