所以假设我有一节课:
class SuperClass():
def __init__(self, number):
self._inputnumber = number
self._initallist = []
然后我想构建这个类的子类,这些子类的方法可以向初始化的列表中添加项、从中读取项或从中移除项。例如。在
^{pr2}$这是一个有点粗糙的例子,我试图做什么。我希望我的初始列表可以用于两个类,这样它们就可以按上面所示的方式执行。但是,在我的例子中,我得到了AttributeError,说我的超类没有命名属性。在
AttributeError: type object 'SuperClass' has no attribute '_initiallist'
有什么建议吗?有没有可能或者我必须做些别的事情来达到这个结果?在
_initallist
是一个实例属性,不能通过Super._initallist
来访问它。在我想你想做的就在下面。您需要在
SubClass
中初始化SuperClass
。我认为如果这是一个右是一个关系,那么SubClass
中需要有一个number
。在“我想生成这个类的子类,这些子类的方法可以将项添加到初始化的列表中,…”
你是说希望子类继承实例属性}将是一个不同的列表。在
_initiallist
,并提供对其进行操作的方法?如果是这样的话,那么子类的实例将每个都有一个_initiallist
属性,但是对于类的每个实例,{在这种情况下,解决方案如张阳玉所述。在
“我希望能够将我的初始列表提供给几个类,以便他们都能按照上面所示的方式执行。”
根据标题,我可以将其解释为:我希望超类的某个实例的
_initiallist
属性可用于两个子类的实例,这样它们就可以对同一个列表执行操作。在如果
_initiallist
是一个类属性,那么可以这样做,或者在实例化子类时,可以将超类的实例作为__init__
参数传递,据我目前所知。在另外,这意味着示例中的两个类不具有是关系,而是您的超类实际上是一个sharedobject(AFAIK)。在
如果将其作为类属性,则会失去一些灵活性,因为超类的不同实例都会有一个指向相同列表的属性
_initiallist
。如果你把它作为一个实例属性,把超类的一个实例作为一个参数(作为一个共享对象)传递给子类,那么你仍然可以实现你想做的事情,并且仍然可以灵活地创建共享对象的多个实例。在只要做
self._initiallist.append(self._thisline + 1)
相关问题 更多 >
编程相关推荐