2020-03-20

class Person:

# 當我們通過 "實例.屬性 = 值", 給一個實例增加一個屬性, 或者說, 修改一下屬性值的時候, 都會調用這個方法
# 在這個方法內部, 才會真正的把, 這個屬性, 以及對應的數(shù)據, 給存儲到__dict__字典里面
    def __setattr__(self, key, value):
        print(key, value)

        # 1. 判定, key, 是否是我們要設置的只讀屬性的名稱
        if key == "age" and key in self.__dict__.keys():
            print("這個屬性是只讀屬性, 不能設置數(shù)據")
        # 2. 如果說不是, 只讀屬性的名稱, 真正的給它添加到這個實例里面去
        else:
            # 這種賦值操作會出現(xiàn)重復調用 __setattr__方法,出現(xiàn)死循環(huán)
            # self.key = value
            self.__dict__[key] = value

p1 = Person()
p1.age = 18
# p1.name = "sz"
# print(p1.age)
print(p1.age)

p1.age = 999
print(p1.age)
print(p1.__dict__)
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容