[英]Python class method inheritance
我有兩個類,一個繼承自另一個。 我需要WOFPlayer
實例采用 1 個必需參數 - name
,2 個可選參數, WOFComputerPlayer
實例需要采用 2 個必需參數 - name
和difficulty
以及WOFPlayer
中的 2 個可選WOFPlayer
。 我怎么做?
這是我嘗試過的
class WOFPlayer:
def __init__(self, name, prizeMoney = 0, prizes = []):
self.name = name
self.prizeMoney = prizeMoney
self.prizes = prizes[:]
class WOFComputerPlayer(WOFPlayer):
def __init__(self, difficulty):
WOFPlayer.__init__(self, name, prizeMoney = 0, prizes = [])
self.difficulty = difficulty
提前致謝
我需要 WOFPlayer 的實例來獲取 1 個必需參數 - 名稱,2 個可選參數
我強烈建議您不要使用可變對象(本例中的列表)作為默認參數。 這是為什么。
和 WOFComputerPlayer 實例采用 2 個必需參數 - 名稱和難度以及 WOFPlayer 中的 2 個可選參數
您需要將值從 WOFComputerPlayer 傳遞到其基類。 也就是說,將name
傳遞給WOFComputerPlayer
。
class WOFComputerPlayer(WOFPlayer):
def __init__(self, name, difficulty, prize_money=0, prizes=None):
WOFPlayer.__init__(self, name, prizeMoney=prize_money, prizes=prizes)
self.difficulty = difficulty
你比你想象的更近。
class WOFPlayer:
def __init__(self, name, prizeMoney=0, prizes=None):
self.name = name
self.prizeMoney = prizeMoney
if prizes is None:
prizes = []
self.prizes = prizes[:]
class WOFComputerPlayer(WOFPlayer):
def __init__(self, name, difficulty, prizeMoney=0, prizes=None):
super().__init__(name, prizeMoney, prizes)
self.difficulty = difficulty
請注意,我將傳遞可變值替換為默認參數。 []
作為默認參數將在該值發生變化時發生變化,這可能是錯誤的秘訣。 但其余的代碼是你的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.