python元类编程(1)

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

1. property动态属性

@property装饰器可以把一个类函数变成一个属性描述符, 能够像访问类的属性一样访问该函数
代码实例

class Person(object):

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

    @property
    def age(self):
        return 10


if __name__ == '__main__':
    p = Person(20, '小明')
    print(p._age)
    print(p.age)

运行结果

20
10

2. 使用@setter为动态属性赋值

@动态属性名.setter装饰后的函数可以通过属性赋值的方式来给动态属性赋值
代码实例

class Person(object):

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

    @property
    def age(self):
        return 10

    @age.setter
    def age(self, value):
        self._age = value


if __name__ == '__main__':
    p = Person(20, '小明')
    p.age = 30
    # 通过直接赋值的方式来调用age方法为_age属性赋值
    print(p._age)
    print(p.age)

运行结果

30
10
上一篇 下一篇

猜你喜欢

热点阅读