我有几个与python中同一个类实例的多次初始化相关的noobie问题。通过多次创建实例来更改对象属性是否正确:
obj=MyClass(a,b)
obj=MyClass(c,d)
obj=MyClass(e,f)
命令obj=MyClass(a,b)
和obj.__init__(a,b)
平等吗?如果不是,有什么区别?
我有几个与python中同一个类实例的多次初始化相关的noobie问题。通过多次创建实例来更改对象属性是否正确:
obj=MyClass(a,b)
obj=MyClass(c,d)
obj=MyClass(e,f)
命令obj=MyClass(a,b)
和obj.__init__(a,b)
平等吗?如果不是,有什么区别?
在您的示例中,您正在实例化三个不同的类对象MyClass
并丢弃前两个。为了能够在同一个对象上多次执行相同的初始化,我定义了一个initialize(self)
方法MyClass
并从__init__(self)
.
obj = MyClass(a,b)
- 这将创建一个新实例
obj.__init__(a,b)
__init__
- 这将在当前实例上调用方法
通常,您__init__
在创建实例 ( obj = MyClass(a,b)
) 时调用一次隐式,稍后直接或使用某些方法修改它的字段。像:
obj = MyClass(a,b)
obj.a = 'foo'
obj.b = 2