我想要两节课。具有默认类属性的类A和重写此类属性的类B(子类)。但是如果开发者更改了类属性定义,我不想再写B类属性。
例子:使用简单的覆盖:
class Animal:
actions = {}
class Dog(Animal):
actions = {'bite': 1}
如果有一天Animal
被修改如下:
class Animal:
actions = {'bleed': 1}
狗课必须重写。所以我这样做是为了防止父类更新:
Python 3.4.0 (default, Apr 11 2014, 13:05:18)
[GCC 4.8.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> class A:
... d = {}
... @classmethod
... def c(cls):
... print(cls.d)
...
>>> class B(A):
... d = A.d.copy()
... d.update({0: 1})
...
>>> B.c()
{0: 1}
>>> A.c()
{}
这是一个很好的方法吗?还是有更多的“蟒蛇方式”来做它?