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()
时,你确实调用了Parent
class的方法calc()
,但它也returns实例变量,显然是一样的。
您可能想要做的是在您的父 class 中使用 Parent.CONST_VAL
。
假设,我有类似的代码:
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()
时,你确实调用了Parent
class的方法calc()
,但它也returns实例变量,显然是一样的。
您可能想要做的是在您的父 class 中使用 Parent.CONST_VAL
。