您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何覆盖python中的类属性访问?

如何覆盖python中的类属性访问?

__getattr__属性不上实例/类/父类存在魔术方法调用。您将使用它为缺少的属性引发特殊异常:

class Foo(object):
    def __getattr__(self, attr):
        #only called what self.attr doesn't exist
        raise MyCustonException(attr)

如果要自定义对类属性的访问,则需要__getattr__元类/类型上进行定义:

class BooType(type):
    def __getattr__(self, attr):
        print attr
        return attr

class Boo(object):
    __Metaclass__ = BooType

boo = Boo()
Boo.asd # prints asd
boo.asd # raises an AttributeError like normal

如果要自定义 所有 属性访问,请使用__getattribute__magic方法

python 2022/1/1 18:46:43 有329人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶