Python: передача необязательных аргументов в наследовании классов - PullRequest
0 голосов
/ 10 октября 2019

Я не понимаю, почему я не могу установить свои необязательные аргументы в значения. Я всегда получаю пустой список. У меня есть аргумент, установленный как Nonetype, чтобы избежать использования изменяемого типа. Это не обновляется из-за недосмотра в моих родительских классах или это что-то еще?

class Human:
  def __init__(self,first,last,age,nicknames=None):
    self.first =first
    self.last = last
    self.age = age

    if nicknames is None:
      self.nicknames = []
    else:
      self.nicknames = nicknames


class NFL_QB:
  def __init__(self,td,comeback,lst=None):
    self.td = td
    self.comeback = comeback

    if lst is None:
      self.lst = []
    else:
      self.lst = lst


class College_QB:
  def __init__(self,c_td,c_comeback):
    self.c_td = c_td
    self.c_comeback = c_comeback


class Player(Human,NFL_QB,College_QB):
  def __init__(self,first,last,age,td,comebacks,c_td,c_comebacks,nicknames=None,lst=None):
    Human.__init__(self,first,last,age,nicknames=None)
    NFL_QB.__init__(self,td,comebacks,lst=None)
    College_QB.__init__(self,c_td,c_comebacks)




ply = Player('tom','brady',42,532,55,32,21,['toutchdown tom'],[2016])

1 Ответ

1 голос
/ 10 октября 2019

Передайте аргументы вашим конструкторам суперкласса:

class Player(Human,NFL_QB,College_QB):
  def __init__(self,first,last,age,td,comebacks,c_td,c_comebacks,nicknames=None,lst=None):
    Human.__init__(self,first,last,age,nicknames=nicknames) # You were passing `None` here
    NFL_QB.__init__(self,td,comebacks,lst=lst)  # ...and here.
    College_QB.__init__(self,c_td,c_comebacks)




ply = Player('tom','brady',42,532,55,32,21,['toutchdown tom'],[2016])
print(ply.__dict__)
...