在学校里,我们得到了一份班级档案:
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'
>>>
我们不知道我们做错了什么。猜猜看?在
self.\uu einzahlen(zinsen)-->;self.einzahlen公司(津森)
双前导下划线使用当前类的名称调用名称混乱。请改用一个前导下划线。在
丹尼尔已经到了一半,你确实需要改变一下,就像他说的那样。在
另外,
self.__stand
属于父类。如果名称中有双下划线,则会在其他任何地方乱用。但您不需要直接使用self.__stand
。Konto给你getStand()
。在试试这样的方法:
相关问题 更多 >
编程相关推荐