是否可以从子类更新在超类中初始化的对象?

用户2560035

所以可以说我有一堂课:

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,说我的超类没有命名属性。

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

有关如何执行此操作的任何提示?甚至有可能还是我需要做其他事情才能达到这个结果?

拉斯威

“我想建立此类的子类,这些子类具有可以将项目添加到初始化列表的方法,...”

您是说要子类继承实例属性 _initiallist并提供对其执行操作的方法吗?如果是这种情况,那么实例子类将各自拥有的_initiallist属性,每个_initiallist该类的每个实例都将是一个不同的列表。

在那种情况下,解决方案就如张扬宇所描述的。


“我希望能够将我的初始清单提供给几个班级,以便他们都可以像上面所示那样对它采取行动。”

基于标题,我可以将其解释为:我希望超类_initiallist的某些实例属性可用于几个子类的实例,以便它们都可以作用于相同的精确列表。

如果_initiallist是class属性,则可以执行此操作,或者__init__据我所知,可以在实例化子类时将超类的实例作为参数传递

此外,这将意味着,这两个班在你的榜样不posses的是一种关系,而是,你的超确实是一个共享对象(据我所知)。

如果将其设置为类属性,则会失去灵活性,因为超类的不同实例都将具有_initiallist指向相同确切列表的属性好像您将其保留为实例属性,并将超类的实例作为参数(作为共享对象)传递给子类一样,那么您仍然可以实现您想要做的事情,并且仍然可以灵活地创建多个您的共享对象。

class SharedObject(object):

    def __init__(self, number):
        self._inputnumber = number
        self._initiallist = []


class Client(object):

    def __init__(self, obj, current_line, new_line):
        self._sharedobj = obj
        self._thisline = current_line
        self._gohere = new_line

    def execute(self):
        self._sharedobj._initiallist.append(self._thisline + 1)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如果仅初始化超类对象,是否可以调用特定于子类的方法?

在子类中初始化超类对象

是否可以从子类的超类中取代方法?

用子类型初始化父类中的对象

当子类在构造函数中初始化时,是否应该在超类的声明中保留字段初始化?

子类的对象创建是否创建超类的对象(如果是)是否可以在子类中访问它?

使用超类初始化子类对象Java

使超类的初始化程序返回特定的子类?

数据不是来自超类的子类初始化问题

Kotlin-是否可以在类中的init块之前初始化伴侣对象?

在子类中初始化超类变量(构造函数中需要)

Swift中的子类不会继承其超类的初始化程序

Java-在子类中初始化超类变量吗?

为什么此超类在初始化期间不在子类中运行方法?

如何在子类的初始化中设置超类实例

在超类初始化之前,子类最终进行静态初始化?

对象工厂设计以初始化父类或子类对象

Java,是否可以将子类中的对象“转换”为超类中的对象

java,从超类初始化子类

是否可以从子类和父类中绘制 QWidget?

如何从子类的构造函数初始化父类的私有成员

在调用超类的构造函数之前,有什么方法可以在Java中初始化子类的成员变量?

在父类中使用的子类中初始化属性

是否可以将已经初始化的对象文字作为已定义类的实例?

在Swift中重写超类初始化器

是否可以在构造函数的初始化列表中初始化新对象并对其进行引用?

从子类初始化私有变量

无法子类化UIButton:必须调用超类'UIButton'的指定初始化程序

从子类对象访问超类成员的Python方法