如何在python中将属性访问转换为继承的属性访问?
问题描述:
我有一些类从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
答
子类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'}
我不知道你在做什么试图在这里实现,但我认为你可以将my_dict“分解”为类属性。 – Keith
也因为'my_dict'是一个静态属性,你不必调用super,你可以直接访问'SuperClass.my_dict' – dm03514