Class-Python 的超级方法中的变量访问

Class-variables access in super method of Python

假设,我有类似的代码:

class Parent:
  CONST_VAL = '1'
  
  def calc(self):
     return self.CONST_VAL

class Child(Parent):
  CONST_VAL = 'child'

  def calc(self):
     return super().calc() + self.CONST_VAL

然后我执行以下命令:

c = Child()
c.calc()

>> childchild

我希望它是“1child”,但它不是。

是否有像 C++ 中那样对超级方法进行 class 变量隔离的正确方法?

在您使用的两种方法中,您都使用 self.CONST_VAL - 这是一个 实例 变量。

当你调用super().calc()时,你确实调用了Parentclass的方法calc(),但它也returns实例变量,显然是一样的。

您可能想要做的是在您的父 class 中使用 Parent.CONST_VAL