如何让 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'
我想定义一个 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'