类属性覆盖:保持父类更改

时间:2015-04-28 06:53:47

标签: python

我想要两节课。具有默认类属性的类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()
{}

这是一个很好的方法吗?还是有更多的“蟒蛇方式”来做它?

0 个答案:

没有答案