python中的继承问题

2024-06-26 14:12:25 发布

您现在位置:Python中文网/ 问答频道 /正文

在学校里,我们得到了一份班级档案:

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)

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

^{pr2}$

我得到这个错误

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'
>>> 

我们不知道我们做错了什么。猜猜看?在


Tags: selfhomereturninitdefminimumstandbetrag
3条回答

self.\uu einzahlen(zinsen)-->;self.einzahlen公司(津森)

双前导下划线使用当前类的名称调用名称混乱。请改用一个前导下划线。在

丹尼尔已经到了一半,你确实需要改变一下,就像他说的那样。在

另外,self.__stand属于父类。如果名称中有双下划线,则会在其他任何地方乱用。但您不需要直接使用self.__stand。Konto给你getStand()。在

试试这样的方法:

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

相关问题 更多 >