Python:访问器以及修改器

和自甴很熟 提交于 2020-01-14 03:28:44
类中的属性
_属性名 不建议访问,暗示这个属性名是受保护的
想访问可以通过属性的getter(访问器)和setter(修改器)方法进行对应的操作
使用@property包装器来包装getter和setter方法,使得对属性的访问既安全又便捷
__属性名 访问不到
property    英[ˈprɒpəti]
美[ˈprɑːpərti]
n. 所有物; 财产; 财物; 不动产; 房地产; 房屋及院落; 庄园;
[例句]Richard could easily destroy her personal property to punish her for walking out on him
理查德能轻易毁掉她的私人财产来惩罚她对他的背叛。
[其他]   复数:properties

 

通过装饰器访问不建议访问的属性

# @property装饰器

class A:
    def __init__(self):
        self._x = 10
        self._y = 20

    @property
    def y(self):
        return self._y

    @property
    def x(self):
        return self._x


a = A()

print(a.x, a.y)

 

setter    修改不建议访问的属性

 

class Person(object):
    def __init__(self, name, age):
        self._name = name
        self._age = age

    # 访问器 getter方法
    @property
    def name(self):
        return self._name

    # 访问器 getter方法
    @property
    def age(self):
        return self._age

    # 修改器 setter方法
    @age.setter
    def age(self, age):
        self._age = age

    def play(self):
        if self._age <= 16:
            print('%s正在画圈圈' % self._name)
        else:
            print('%s正在打飞机' % self._name)


def main():
    person = Person('王大锤', 12)
    person.play()
    # 修改属性
    person.age = 22
    person.play()

    # 如果我们修改name属性
    person.name = '她与断剑'  # AttributeError: can't set attribute(不可修改)


if __name__ == '__main__':
    main()

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!