Python部分类继承

时间:2017-06-13 10:41:14

标签: python inheritance

我有一个问题,我希望我的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的余额值相同。

0 个答案:

没有答案