我想通过扩展始终具有相同第一阶段的方法来进行子类化,例如:
class Data:
def show(self):
# this part is common for all subclasses
total=10
class PrintA(Data):
def show(self):
Data.show(self)
print(total)
class PrintAPlus(Data):
def show(self):
Data.show(self)
print(total+10)
但是,我得到NameError: name a is not Defined
。
如何重用父类(super class)方法中的total
变量?
(最明显的一个是将其保存为实例的属性,但实际上我不需要那里。)
最佳答案
这里的问题是 total
仅在父类(super class)方法 show
内部赋值,只有一个局部变量。它的值(value)在它之外是看不到的。
要修复它,您需要将其设为实例属性或从那里返回该值
选项1
class Data:
def show(self):
# this part is common for all subclasses
self.total = 10
class PrintA(Data):
def show(self):
Data.show(self)
print(self.total)
class PrintAPlus(Data):
def show(self):
Data.show(self)
print(self.total+10)
选项2
class Data:
def show(self):
# this part is common for all subclasses
return 10
class PrintA(Data):
def show(self):
total = Data.show(self)
print(total)
class PrintAPlus(Data):
def show(self):
total = Data.show(self)
print(total+10)
关于python - 如何在Python 3中重用父类(super class)方法的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44378147/