[英]Assigning value of a class instance variable starting with __ outside the class.
我對python很陌生,只是想了解面向對象編程在其中的工作方式。 我已經讀到,在變量前面使用雙_(下划線)表示無法在類外部更改其值。 為了測試它,我嘗試運行以下代碼段。
class a:
def set_value(self,x):
self.__x = x
def get_value(self):
return self.__x
a_obj = a()
a_obj.set_value(10)
a_obj.__x = 1
print a_obj.__x
print a_obj.get_value()
輸出結果是
1
10
我不了解這種行為。 當我檢查兩個變量的ID時,它會有所不同。 我知道有一個名稱修飾的概念,但是我不完全了解自己在做什么。
看看https://en.wikipedia.org/wiki/Name_mangling#Python
當您在類之外分配__x時,您沒有更改現有的類變量,而是創建了一個新變量。 當您創建一個新的確實是__x的現有文件時,會將現有的文件改成_a__x
嘗試將其添加到代碼末尾:
print a_obj._a__x
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.