如何在python中将属性访问转换为继承的属性访问?

时间:2012-11-13 16:49:25

标签: python inheritance

我在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

1 个答案:

答案 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'}