[英]Change the class attribute value outside the class
我有一個這樣的圖書館:
class Robot:
__counter = 0
@classmethod
def get_c(cls):
result = cls.__counter + 1
return result
我正在嘗試通過初始化 class 屬性 __counter = 1 來訪問此 class,因此我可以從 get_c() function 獲得 2。 這就是我所做的:
Robot.__counter = 1
x = Robot()
x.get_c()
為什么結果仍然是 1 以及在內部不接觸 class 的情況下做我想做的事情的解決方案是什么謝謝!
您使用了雙下划線 name-mangling 。 每次你這樣做時都會翻譯:
__some_var
在 class 內部定義為:
_MyClass__some_var
這就是重點——避免子類中的名稱沖突。
如果您想像這樣在 class 之外訪問它,請不要使用雙下划線名稱修飾。
我不確定“內部不接觸 class”是什么意思,但在這種情況下:
Robot._Robot__counter = 1
會起作用,盡管執行上述操作表明您不應該使用雙下划線名稱修飾。
順便說一句,這並不等同於具有訪問修飾符的語言中的“私有”,盡管它對於有限的用例具有相同的目的,防止子類中的意外名稱沖突。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.