这个问题/答案 ( Python call constructor in a member function ) 说可以从成员函数中调用构造函数。
我该怎么做?
风格好吗?
我用下面的代码试了一下:
class SomeClass(object):
def __init__(self, field):
self.field = field
def build_new(self):
self = SomeClass(True)
def main():
inst = SomeClass(False)
inst.build_new()
print(inst.field)
if __name__ == '__main__':
main()
作为输出,我得到:False
既然我调用了 build_new()
方法,inst.field
应该是 True
还是不是?
最佳答案
问题不在于调用构造函数,而在于你对结果做了什么。 self
只是一个局部变量:分配给它不会改变当前实例的任何内容,它只会重新绑定(bind)名称以指向一个新实例,然后在结束时丢弃该实例方法。
我不完全确定你想做什么,但也许你想要一个类方法?
class SomeClass(object):
...
@classmethod
def build_new(cls):
return cls(True)
SomeClass.build_new(False)
关于Python:如何从成员函数中调用构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25118798/