python - python中的继承问题

标签 python inheritance

在学校我们得到了这个类文件:

class Konto:
    def __init__(self, nummer):
        self.__nr = nummer
        self.__stand = 0
        self.__minimum = -1000.0

    def getStand(self):
        return self.__stand

    def getNr(self):
        return self.__nr

    def einzahlen(self, betrag):
        self.__stand = self.__stand + betrag

    def auszahlen(self, betrag):
        if self.__stand - betrag >= self.__minimum:
            self.__stand = self.__stand - betrag
        else:
            print("Auszahlung nicht möglich!")

class Sparkonto(Konto):
    def __init__(self, nummer):
        Konto.__init__(self, nummer)
        self.__zinssatz = None
        self.__minimum = 0
        self.__maxAuszahlung = 2000.0

    def setZinssatz(self, zinssatz):
        self.__zinssatz = zinssatz

    def getZinssatz(self):
        return self.__zinssatz

    def auszahlen(self, betrag):
        if betrag <= self.__maxAuszahlung:
            Konto.auszahlen(self, betrag)
        else:
            print("Auszahlung nicht möglich!")

    def zinsenGutschreiben(self):
        zinsen = self.__stand * (self.__zinssatz / 100)
        self.einzahlen(zinsen)

当我运行这个测试程序时:

#Test
from sparkonto import *
s = Sparkonto(1)
s.einzahlen(1000)
print(s.getStand())
s.setZinssatz(4)
print(s.getZinssatz())
s.zinsenGutschreiben()
print(s.getStand())
s.auszahlen(2500)
print(s.getStand())

我收到这个错误

1000
4
Traceback (most recent call last):
  File "/home/malte/home/py3/sparkonto/test.py", line 8, in <module>
    s.zinsenGutschreiben()
  File "/home/malte/home/py3/sparkonto/sparkonto.py", line 44, in zinsenGutschreiben
AttributeError: 'Sparkonto' object has no attribute '_Sparkonto__einzahlen'
>>> 

我们不知道我们做错了什么。有什么猜测吗?

最佳答案

Daniel 说到一半,您确实需要像他说的那样更改 self.__einzahlen -> self.einzaheln

此外,self.__stand 属于父类。由于名称中有双下划线,它会在其他任何地方使用。但是你不需要直接使用self.__stand。 Konto 为您提供 getStand()

尝试这样的事情:

def zinsenGutschreiben(self):
    zinsen = self.getStand() * (self.__zinssatz / 100)
    self.einzahlen(zinsen)

关于python - python中的继承问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3090683/

相关文章:

python 从内核日志中读取最后三行

node.js - 如何在 Node.js 的模块内使用 Object.create 进行继承

javascript - jQuery 和插件命名空间和继承

java - 为我的项目选择父类(super class)

python - 在不加载的情况下计算 gzipped tsv 的列

python - 如何将离散值映射到 seaborn 中的热图?

c# - 派生类重新实现接口(interface)时如何调用基接口(interface)实现?

java - 我对Java继承有相当基本的了解。有人可以解释该怎么做吗?

python - 调试(过早?)OOM-killer 输出

python - 带有 "Wide"数据的 Pandas groupby