python - 如何在Python 3中重用父类(super class)方法的变量?

标签 python python-3.x oop inheritance

我想通过扩展始终具有相同第一阶段的方法来进行子类化,例如:

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/

相关文章:

python - 如何向 Google 数据存储 StringListProperty 添加选项?

python - 在Python中用None替换列表元素可以节省内存吗?

python - 有什么方法可以更有效地检查单词中的所有字母是否都在列表中?

mysql - 在 Django Python 中删除元素后重新排序数据库

php - 使用一些使用数据库连接的类

c++ - OOP 与宏问题

python - 在 pkg-config 搜索路径中找不到软件包 libffi REDHAT6.5

python - python 中的等高线图

python - 如果 Python3 否定与 XOR 相比,为什么它运行得更快?

在构造函数中创建 JavaScript 原型(prototype)