python - 是否可以从子类更新在父类(super class)中初始化的对象?

标签 python inheritance subclass superclass

假设我有一个类:

class SuperClass():
    def __init__(self, number):
       self._inputnumber = number
       self._initallist = []

然后我想构建此类的子类,这些子类具有可以将项目添加到初始化列表、从中读取项目或从中删除项目的方法。例如。

class SubClass(SuperClass):
     def __init__(self, number, current_line, new_line): 
        self._number = number
        self._thisline = current_line
        self._gohere = new_line
     def execute(self):
        (SuperClass._initallist).append(self._thisline + 1)

这是我正在尝试做的事情的一个粗略示例。我希望能够为几个类提供我的初始列表,以便他们都可以按照上面所示的方式对其进行操作。不过,在我的例子中,最终发生的是我收到一个 AttributeError 消息,指出我的父类(super class)没有指定的属性。

AttributeError: type object 'SuperClass' has no attribute '_initiallist'

关于如何执行此操作有任何提示吗?是否有可能或者我必须做其他事情才能达到这个结果?

最佳答案

_initallist是一个实例属性,您无法通过Super._initallist访问它。

我认为您想要做的事情如下。您需要在SubClass中初始化SuperClass。我认为如果这是一个正确的is-one关系,则SubClass中需要有一个number

class SuperClass():
    def __init__(self, number):
       self._inputnumber = number
       self._initallist = []

class SubClass(SuperClass):
     def __init__(self, number, current_line, new_line):
        SuperClass.__init__(self, number) 
        self._thisline = current_line
        self._gohere = new_line
     def execute(self):
        self._initallist.append(self._thisline + 1)

关于python - 是否可以从子类更新在父类(super class)中初始化的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17771337/

相关文章:

ios - 从外部类管理 UIPickerView - 使用 Swift

python - 使用条件列表过滤 Pandas 中的 DataFrame

python - 如何在不指定绝对路径的情况下使用 PIL.ImageFont.truetype 加载字体文件?

python - 离散浮点网格中的 PyMC DiscreteMetropolis

ios - 如何使用 Swift 从其父级的 Nib 创建 View

Javascript,原型(prototype)不继承

C++ 没有运算符 "<<"匹配这些操作数(继承)

NHibernate 左外连接子类

ruby - 为什么 inspect for the subclasses of built-in classes 中没有列出实例变量?

python - 大型 matplotlib 像素图最佳方法