【发布时间】:2019-02-01 14:43:08
【问题描述】:
我有一个包含数字属性的基类,这些属性在初始化时作为字典简单地传递给它,然后添加到实例的字典中:
class baseclass(object):
def __init__(self, **kwargs):
self.__dict__.update(kwargs)
def calcValue(self):
return sum(vars(self).values())
现在我有一个从这个类派生的类,它为类添加了额外的属性,例如;
class childclass(baseclass):
def __init__(self, stringValue, **kwargs):
super(childclass, self).__init__(kwargs)
self.name = stringValue
现在我想在我的基类中有一个函数,它只遍历添加到类中的所有属性,而不是作为子属性添加的属性。例如,如果我像这样创建一个子类的实例:
instance = childclass("myname", a=1, b=2, c=3)
然后调用calcValue方法,应该返回1+2+3 = 6
instance.calcValue()
但是由于 vars(self) 将返回完整的字典,不包括 childclass 属性中的字符串,当然不能添加。有没有办法只访问属于各自派生类的实例的属性?
【问题讨论】:
-
如果我遇到这样的问题,我会考虑设计是否正确。如果您想分离事物,请以一种或另一种方式明确分离。
标签: python python-3.x inheritance