2017-07-28 167 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总是有一个),或者说,它已通过作为参数的上下文。