About @property包装器 getter和setter方法

若是想访问属性能够经过属性的getter(访问器)和setter(修改器)方法进行对应的操做python

 

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       #若是把@age.setter注释掉,那么这个类实例化对象的age属性将不能修改
    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()
    # person.name = '白元芳'  # AttributeError: can't set attribute

@property装饰器定义的函数才有修改的可能,可方便进行访问属性的函数定义。否则要去访问person._name了函数

@function.setter 修改器,可进行修改函数的定义,code

_name相似的是私有属性,只有子类能够继承对象

__name相似的是保护属性,连子类都不能继承继承

相关文章
相关标签/搜索