如何让 python 对象永远不会出现属性错误

How to never have an attribute error for a python object

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

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'

自然地,它应该能够 return 其他东西,比如在不同的词典中查找它们以及 returning 它找到的内容或默认值。 有什么办法可以做到吗?

是的,您可以通过实施 __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'