我想我误解了类型继承在 python 中是如何工作的。
当我在父类中定义变量时,在父类中继承的任何子类都从父类引用相同的变量。
class Parent(object):
store = dict()
class ChildA(Parent):
pass
class ChildB(Parent):
pass
ChildA.store['key1'] = 'val'
ChildB.store['key2'] = 'val'
print ChildB.store['key1'] == ChildA.store['key2']
我想要实现的是在继承自store
的每个类中创建字典实例。所以引用会提高Child
Parent
ChildB.store['key1']
KeyError
我尝试在__new__
创建类型时使用创建字典实例:
class NewParent(object):
def __new__(cls, *args, **kwargs):
rv = super(NewParent,cls).__new__(cls, *args, **kwargs)
rv.store = dict()
return rv
但它似乎__new__
只在实例化Child
类之前运行,所以通过类型引用变量(例如Child.store
正在提升AttributeError
)
那么有什么方法可以实现我想要的行为吗?