簡體   English   中英

在類外分配以__開頭的類實例變量的值。

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM