我有一个问题,我希望我的def transfer(self,amount):
仅继承来自父类的self.__balance
,而不是其他值。
class Konto:
def __init__(self,number,owner,bday,adress,opened,balance):
self.__number = number
self.__owner = owner
self.__bday = bday
self.__adress = adress
self.__opened = opened
self.__balance = balance
def get_Kontostand(self):
return "Kontostand:" + str(self.__balance)
def set_Kontostand(self, new_balance):
self.__balance = new_balance
return self.__balance
def Einzahlung(self, insert):
self.__balance = self.__balance + insert
def Auszahlung(self, outtake):
self.__balance = self.__balance - outtake
class Girokonto(Konto):
def __init__(self,creditlimit,overdraft,interest,number,owner,bday,adress,opened,balance):
self.__creditlimit = creditlimit
self.__overdraft = overdraft
self.__interest = interest
super().__init__(number,owner,bday,adress,opened,balance)
def set_Kreditlimit(self, new_creditlimit):
self.__creditlimit = new_creditlimit
def Überweisung (self, amount):
self.__balance -= amount
为了便于阅读,我删除了一些get / set方法。 我的问题是最后一行,如果我正在尝试执行:
Test = Girokonto(1500,5,1,17033,"Name",21,"Street",24,4900)
Test.Überweisung(20)
它返回错误:
Traceback (most recent call last):
File "C:\Users\Konto.py", line 96, in <module>
Test.Überweisung(20)
File "C:\Users\Konto.py", line 92, in Überweisung
self.__balance -= amount
AttributeError: 'Girokonto' object has no attribute '_Girokonto__balance'
因为它说该属性丢失了,所以我尝试用Konto类继承它:
def Überweisung (self, amount):
super().__init__()
self.__balance -= amount
哪个不起作用,因为它说 init ()缺少六个位置参数。 如果我只是将它们插入 init ()括号中,它就不起作用了,因为:
super().__init__(number,owner,bday,adress,opened,balance)
NameError: name 'number' is not defined
如果我也将它插入Überweisung(),那么我还必须在我的命令中插入这些参数,即使这样我也收到错误:
AttributeError: 'Girokonto' object has no attribute '_Girokonto__balance'
我的最后一个想法是在没有自我的情况下尝试。在__balance之前,但答案是:
UnboundLocalError: local variable '_Girokonto__balance' referenced before assignment
我不知道如何继续这样做。 是否有可能只是将self .__ balance的值继承到子类? 重要的是,在执行Test.Überweisung()后,我仍然可以执行Test.Einzahlung()之类的操作,并且类和子类中的Test的余额值相同。