2012-11-13 125 views
0

我有一些类从python继承超类。超类有一个包含一些值的字典。一些派生类直接通过属性访问来使用这个字典。然而,一些派生类定义了自己的字典,覆盖了超类的字典。如何在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

我不知道你在做什么试图在这里实现,但我认为你可以将my_dict“分解”为类属性。 – Keith

+0

也因为'my_dict'是一个静态属性,你不必调用super,你可以直接访问'SuperClass.my_dict' – dm03514

回答

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