2017-07-28 170 views
0

我對構造函數中的變量賦值有個疑問:我有一個採用參數'context'的構造函數。首先,我將這個變量賦值給一個類變量。其次,我創建了另一個類,它也將「語境」作爲一個論點。構造函數中的變量賦值

我的問題:將類變量(self.context)或從構造函數(上下文)的參數賦值給新創建的類會更好嗎?

class State(): 
    def __init__(self, context): 
     self.context = context   
     self.diconnected = Disconnected(self.context) 

class State(): 
     def __init__(self, context): 
      self.context = context   
      self.diconnected = Disconnected(context) 
+2

這些是實例變量,而不是類變量。 –

+0

對不起。我的意思是實例變量 – Caduceus

回答

2

最終的結果是相同的。 Disconnected(context)只是稍短而且更快。

0

這實際上並不會影響Python中任何重要方式的程序執行時間。這可能唯一的情況是多線程可能正在使用這些數據。爲了以防萬一,我總是使用這個參數。

+0

澄清:一個線程可能在賦值(self.context = context)和self.context作爲參數的使用之間發生中斷,並因此導致無效狀態? – Caduceus

+0

它可以在傳遞給第二個類構造函數之前更改self.context的值。 – pointerless

0

無客觀上「更好」;在任何情況下,您都會將相同的對象傳遞給Disconnected

你寫哪一個取決於哪些依賴要強調的是:這Disconnected具有相同的上下文self(這也意味着self總是有一個),或者說,它已通過作爲參數的上下文。