我在python中有一些继承自超类的类。超类有一个字典,里面有一些值。一些派生类直接通过属性访问使用此字典。然而,一些派生类定义了自己的字典,覆盖了超类的字典。
这会创建一个全有或全无的情况,即类可以从超类继承字典属性,也可以用自己的类替换它们。
是否有一种向后兼容的,优先的pythonistic方式让clases继承父级的字典并用自己的条目扩充它?如果用方法访问所有内容,我会在继承的类中执行某些操作,如下所示:
class SuperClass(object):
my_dict = {'key': 'value'}
def get_dictioary(self):
return my_dict
class Inherited(SuperClass):
my_dict = {'some key': 'some value'}
def get_dictionary(self):
dictionary = super(SuperClass, self).get_dictioary().copy()
dictionary.update(my_dict)
return dictionary
答案 0 :(得分:1)
你的子类coudl在实例化时获取字典
class Inherited(SuperClass):
my_dict = {}
def __init__(self, a_dict):
# get Superclasses dict
Inherited.my_dict = SuperClass.my_dict
# update with child class specific values
Inherited.my_dict.update(a_dict)
in = Inherited({'some key': 'some value'})
in.my_dict #Inherited.my_dict
# {'key': 'value', 'some key': 'some value'}