国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁技術文章
文章詳情頁

Python小白不正確的使用類變量實例

瀏覽:371日期:2022-07-24 08:05:57

不正確的使用類變量

看下面一個例子:

>>> class A(object):... x = 1...>>> class B(A):... pass...>>> class C(A):... pass...>>> print A.x, B.x, C.x1 1 1

看起來沒有問題。

>>> B.x = 2>>> print A.x, B.x, C.x1 2 1

嗯哈,還是和預想的一樣

>>> A.x = 3>>> print A.x, B.x, C.x3 2 3

我了個去。只是改變了A.x,為啥C.x也變了?

在Python里,類變量通常在內部被當做字典來處理并遵循通常所說的方法解析順序(Method Resolution Order (MRO))。因此在上面的代碼中,因為屬性x在類C中找不到,因此它會往上去它的基類中查找(在上面的例子中只有A這個類,當然Python是支持多重繼承(multiple inheritance)的)。換句話說,C沒有它自己獨立于A的屬性x。因此對C.x的引用實際上是對A.x的引用。(B.x不是對A.x的引用是因為在第二步里B.x=2將B.x引用到了2這個對象上,倘若沒有如此,B.x仍然是引用到A.x上的。)

知識點補充:

類變量、實例變量概念

類變量:

類變量就是定義在類中,但是在函數體之外的變量。通常不使用self.變量名賦值的變量。類變量通常不作為類的實例變量的,類變量對于所有實例化的對象中是公用的。

實例變量:

實例變量是定義在方法中的變量,使用self綁定到實例上的變量,只是對當前實例起作用。

以上就是Python小白不正確的使用類變量實例的詳細內容,更多關于Python新手不正確的使用類變量的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 龙州县| 安西县| 台北市| 黔江区| 昌吉市| 镇江市| 嘉鱼县| 太原市| 新营市| 巴塘县| 贺州市| 阿瓦提县| 高邮市| 固原市| 集贤县| 中超| 连平县| 彝良县| 商洛市| 沙雅县| 得荣县| 义马市| 兴仁县| 晴隆县| 双牌县| 崇义县| 锡林浩特市| 堆龙德庆县| 卢龙县| 五原县| 锡林郭勒盟| 宁武县| 汉源县| 榕江县| 灌云县| 崇义县| 海林市| 德昌县| 象州县| 池州市| 山东|