Python:类和子类问题

标签 python class

我有这个代码:

class main():
    params = {}


class a(main):
    def __init__(self):
        self.params['test'] = "111aa"
        print self.params

class b(main):
    def __init__(self):
        self.params['be'] = "222bbb"
        print self.params

a()
#{'test': '111aa'}

b()
#{'test': '111aa', 'be': '222bbb'}

我只需要从 b 打印 {'be': '222bbb'} 有什么办法吗?

谢谢

最佳答案

试试这个:

class main(object): # use new-style classes!
    def __init__(self):
        self.params = {}

class a(main):
    def __init__(self):
        super(a, self).__init__()
        self.params['test'] = "111aa"
        print self.params

class b(main):
    def __init__(self):
        super(b, self).__init__()
        self.params['be'] = "222bbb"
        print self.params

请注意,在您的代码中,params 被定义为 class 属性。通过在父类(super class)的 __init__ 中定义它,我们声明它是一个实例 属性。另请注意,子类在父类(super class)上调用 __init__

通过这种方式,我们确保每个实例都有自己的 params 属性,而不共享它。您不能指望在实例之间共享一个对象并让每个实例具有不同的值,这是自相矛盾的。

关于Python:类和子类问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18345556/

相关文章:

python - 来自 Python 脚本的 Django runserver

java - 使用 FXML 文件中创建的 TableView 填充 JavaFX 中的 TableView

java - 从另一个类运行 GUI?

python - 使用py2exe后消息框立即关闭

python - MNIST手写数字分类器的预测

Python如何为游戏中的每个类制定规则集

python - Series.update() 也使用 NA 值?

c++ - 使用此代码时,我不断收到错误消息。我正在尝试在继承类中使用构造函数。 C++

c++类函数返回结构元素

JQuery 用编号类包裹 div