【发布时间】:2018-07-03 23:02:03
【问题描述】:
我正在尝试让一个子类从其父类继承属性,但同时,父类存储子类的集合对象。这是我的尝试,但我觉得这不是一种有效的方法,可能还有其他更好的方法来实现它。
class SuperCls:
def __init__(self, a, b):
self.a = a
self.b = b
self.col = []
def addSubCls(self, cCls):
self.col.append(cCls)
class SubCls(SuperCls):
def __init__(self, sp, c, d):
self.c = c
self.d = d
SuperCls.__init__(self, sp.a, sp.b)
def __str__(self):
s = 'a:{}, b:{},c:{},d:{}'.format(self.a,self.b, self.c, self.d)
return s
sup = SuperCls(1,2)
sub=SubCls(sup,3,4)
sup.addSubCls(sub)
sub2=SubCls(sup,5,6)
sup.addSubCls(sub2)
sub3=SubCls(sup,7,8)
sup.addSubCls(sub3)
print '[%s]' % '| '.join(map(str, sup.col[0:]))
# printout: [a:1, b:2,c:3,d:4| a:1, b:2,c:5,d:6| a:1, b:2,c:7,d:8]
【问题讨论】:
-
是什么让你觉得它效率低下?您不喜欢您的解决方案的哪些方面?
-
最终项目旨在容纳多个嵌套集合
-
...和..1。这些是我写过的python的第一行,只是新手关心。 2. 最终项目旨在容纳多个嵌套集合,我发现引用/调用是多余的。 3. 出于同样的原因,我最初的想法是在 sup 类中附加一个子对象的集合,并能够在子方法中使用 sup 属性作为输入。
-
这真的不是一个论坛或教程。您应该花时间阅读How to Ask 和该页面上的其他链接。关于你的类的设计,还有很多事情没有说清楚,这可能会影响实现。如果您使用的是 Python 2,那么您应该在还在学习的时候真正切换到 Python 3.6+。
标签: python class collections attributes datamodel