您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關如何在python 中實現類屬性共享,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
class Dog(object): name = 'dog' def init(self): self.age = 18 d1 = Dog() d2 = Dog()
這里有兩個實例 d1,d2 吧。
d1.name # 輸出 dogd2.name # 輸出 dogd1.name = 'abc' d1.name # 輸出 abcd2.name # 輸出 dogDog.name # 輸出 dog
原因是 d1.name 輸出 dog 不是因為這個實例共享了類屬性,而是因為這個實例沒有 dog 屬性,所以 python 查找了類屬性。但是一旦你修改了 d1.name 相當于給 d1 實例綁定了 name 屬性之后,d1.name 就與類屬性無關了。既然這樣就談不上實例之間共享類屬性了,因為只要一賦值,就相當于綁定了屬性,則上述 d1.name 的含義和 d2.name 的含義就不同了,它們的值也不同,很明顯它們的數據沒有共享。
但是要修改類屬性,應該用
Dog.name = 'new name'
而不應該是
dog1.name = 'new name'
因為實例屬性同名而覆蓋類屬性,的確是一個很容易忽視、出錯的地方。
>>> class Dog(): ... name = "dog" ... >>> d1 = Dog() >>> d1.name 'dog' >>> d2 = Dog() >>> d2.name 'dog' >>> Dog.name 'dog' >>> Dog.name = "a" >>> d.name Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'd' is not defined >>> d1.name 'a' >>> d2.name 'a' >>>
Python主要應用于:1、Web開發;2、數據科學研究;3、網絡爬蟲;4、嵌入式應用開發;5、游戲開發;6、桌面應用開發。
以上就是如何在python 中實現類屬性共享,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。