簡體   English   中英

在類外定義實例變量

[英]Define Instance variable outside the class

今天,我在采訪中被問到一個問題:“如果我們在類之外定義實例變量,它將顯示任何錯誤”。

class temp():
    a=0
    b=0
    def __init__(self,*args):
        temp.a = args[0]
        temp.b = args[1]
        if len(args)>2 and args[2]:
            print 'extra',args[2]

    def display(self):
        print self.a,self.b,self.c

a = temp(4,9)
b = temp(5,3)
a.c = 20
a.display()

如果我在上面的代碼上運行,我會得到c = 20的值。我來自c ++背景,並認為這將是錯誤,但不是...為什么這樣...為什么python允許在類外部創建變量。

我建議閱讀有關類和命名空間的Python文檔。 在Python中,實例只是命名空間的另一種類型,在類定義之外定義實例變量僅涉及在定義實例的名稱和值的字典中添加條目。 與此相反,C是實例,它是根據類定義中定義的模式構造的實際內存塊。 一旦定義了類,就不能在事實之后插入屬性。

在您的情況下, atemp類的實例。 您可以向其中添加任何屬性。 在源代碼中,您可以自己檢查它,它將通過簡單的指針操作將此屬性添加到此實例。 我認為這是動態語言的關鍵點,它與C ++確實不同。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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