Python:如何从成员函数中调用构造函数

标签 python python-2.7 constructor

这个问题/答案 ( 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/

相关文章:

python - 在python中解压每个文件夹和子文件夹中的所有.bz2文件

python - 通过 psycopg2 将字符串插入 postgresql

python - 确定 Maildir 文件夹中唯一的 "from"电子邮件地址

python - SocketServer 绑定(bind)多个服务器

Python - Pandas - 展开/删除累计和

javascript - 子类工厂缺少原型(prototype) - Javascript

python - 如何将带有句子 ID 号的文章标记化的单词保存在 CSV 文件中?

python - 在选项卡之间切换并关闭窗口中的选项卡会出错

c++ - 调用构造函数的次数

c++ - 为什么不能将 std::stol 转换为 std::function 对象?