python元类编程(2)

2020-02-02  本文已影响0人  TheRightPath1

1. getattr魔法函数

getattr魔法函数就是在查找不到属性的时候调用
代码示例

class Person(object):

    def __init__(self, age, name, info={}):
        self._age = age
        self.name = name
        self.info = info

    def __getattr__(self, item):
        # 参数item就是访问了但不存在的属性名称
        print(item)
        return self.info[item]


if __name__ == '__main__':
    p = Person(20, '小明', {'data': '123'})
    print(p.data)

运行结果

data
123

2. getattribute魔法函数

getattribute魔法函数就是只要访问类属性无论属性存在还是不存在都会先调用该方法
代码实例

class Person(object):

    def __init__(self, age, name, info={}):
        self._age = age
        self.name = name
        self.info = info

    def __getattribute__(self, item):
        return '属性'


if __name__ == '__main__':
    p = Person(20, '小明', {'data': '123'})
    print(p.data)
    print(p.name)

运行结果

属性
属性
上一篇下一篇

猜你喜欢

热点阅读