装饰器之@property装饰器 @setter修改器

一、python私有属性

例如,其中__name,__age为私有属性(一般实际使用时,不用双下划线,用单下划线隐喻为私有属性),类外访问会报错

class Person(object):

    def __init__(self, name, age):
        self.__name = name
        self.__age = age

二、私有属性如何访问和修改

1、通过@property访问属性,通过@setter修改属性
其中setter与property定义的方法名要一致

class Person(object):

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

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

    # 修改器 - setter方法
    # 与property定义的方法名要一致
    @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)

2、使用装饰器后,如何访问和修改属性
访问:用@property装饰后,方法可以像属性一样访问,例如person.age
修改:用@setter装饰后,方法可以像属性一样访问修改,例如person.age = 32

def main():
    person = Person('王大锤', 12)
    person.play()
    person.age = 32  # setter的调用方法,直接更改属性
    print(person.age)  # 加了@property后,可以用调用属性的形式来调用方法,后面不需要加()
    person.play()

if __name__ == '__main__':
    main()

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容