0

我在python中有一些继承自超类的类。超类有一个字典,其中包含一些值。一些派生类通过属性访问直接使用这个字典。然而,一些派生类定义了自己的字典,覆盖了超类的字典。

这会产生一种全有或全无的情况,其中类可以从超类继承字典属性,也可以将其替换为自己的。

是否有一种向后兼容的、可取的 pythonistic 方式让子类继承父类的字典并用它们自己的条目来扩充它?如果使用方法访问所有内容,我将在继承的类中执行如下操作:

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
4

1 回答 1

1

您的子类在实例化时可以使用字典

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'}
于 2012-11-13T17:17:33.237 回答