【发布时间】:2025-12-12 09:55:02
【问题描述】:
我想要两节课。具有默认类属性的 A 类和覆盖该类属性的 B 类(子类)。但是如果A类属性定义被developper修改了,我不想再写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()
{}
这是一个好方法吗?还是有更“python 方式”来做到这一点?
【问题讨论】:
-
你永远不会改变广告
-
类属性重载到底是什么意思?
-
考虑到你的问题,我重写了问题。
-
您可能会发现这个关于在 python 中调用父类构造函数的链接很有用。 *.com/questions/2399307/…
标签: python