[英]Python: Passing Optional Arguments in Class Inheritance
我不明白為什么我不能將可選的 arguments 設置為值。 我總是收到一個空列表。 我將參數設置為 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])
將參數傳遞給您的超類構造函數:
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__)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.