Python:訪問器和修改器

類中的屬性
_屬性名 不建議訪問,暗示這個屬性名是受保護的
想訪問可以通過屬性的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()

 

發佈了79 篇原創文章 · 獲贊 64 · 訪問量 8214
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章