jon*_*e83 1 python constructor python-2.7
这个问题/答案(成员函数中的Python调用构造函数)说可以从成员函数中调用构造函数.
我怎么做?
风格好吗?
我用以下代码尝试了它:
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()
Run Code Online (Sandbox Code Playgroud)
作为输出我得到:错误
既然我打电话的build_new()方法inst.field应该True与否?
问题不在于调用构造函数,而在于您对结果所做的事情.self只是一个局部变量:赋值给它不会改变任何关于当前实例的东西,它只会重新绑定名称以指向一个新实例,然后在该方法结束时将其丢弃.
我不完全确定你要做什么,但也许你想要一个类方法?
class SomeClass(object):
...
@classmethod
def build_new(cls):
return cls(True)
SomeClass.build_new(False)
Run Code Online (Sandbox Code Playgroud)
我相信您正在寻找的只是再次调用init函数。
class SomeClass(object):
def __init__(self, field):
self.field = field
def build_new(self):
self.__init__(True)
Run Code Online (Sandbox Code Playgroud)
这将导致字段变量设置为 True 而不是 False。基本上,您正在重新初始化实例而不是创建一个全新的实例。
您当前的代码创建了一个新实例,并且在它超出范围(即函数返回)时丢失了对它的引用,因为您只是将 self 的名称重新绑定到不同的值,而实际上并未更改 self 的内部内容。
| 归档时间: |
|
| 查看次数: |
8008 次 |
| 最近记录: |