【问题标题】:How to never have an attribute error for a python object如何永远不会有 python 对象的属性错误
【发布时间】:2019-12-27 10:29:09
【问题描述】:

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

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'

当然,它应该能够返回其他内容,例如在不同的字典中查找它们并返回它找到的内容或默认值。 有什么办法可以做到吗?

【问题讨论】:

  • 定义__getattr__?

标签: python object attributes attributeerror


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-14
    • 1970-01-01
    • 2012-11-09
    • 2016-02-22
    • 2014-07-08
    • 2020-08-23
    • 2020-06-06
    • 1970-01-01
    相关资源
    最近更新 更多