2017-10-15 59 views
0

我想學習OOP,我找不到如何初始化包含在另一個類中初始化的屬性的列表。如何初始化包含另一個類的實例的列表?

class Player: 

def __init__(self,name,skill_index): 
    self.name=name 
    self.skill_index=skill_index 


class Team: 

def __init__(self, playerlist): 
    self.playerlist='''Here I need to init a list of instances from Player class''' 
    return(playerlist) 

所以,如果我通過print(Team([Player("Player1", [2, 3]), Player("Player2", [3, 1]]))我應該self.playerlist=後寫拿到名單打電話嗎?非常抱歉,糟糕的解釋,我是一個初學者。

+0

你就不能在團隊對象保存到'team'變量然後寫'team.playerlist'?這就是你想要做的一切嗎? – Carcigenicate

+0

您已經在'playerlist'參數中傳遞了一個玩家列表。爲什麼你不能把它分配給'self.playerlist'?你爲什麼認爲你需要做其他事情? –

+0

只需在構造函數中寫'self.playerlist = playerlist',刪除'return',因爲你不能從構造函數中顯式返回,那麼只需寫'team.playerlist'來獲取列表。 – Carcigenicate

回答

1

完成你已經編碼:

... 
class Team: 
    def __init__(self, playerlist): 
     self.playerlist=playerlist 

team = Team([Player("Player1", [2, 3])]) 
player = team.playerlist[0] 
print(player.skill_index) 
>> [2, 3] 

要訪問列表的成員,該位置時,從0開始的:some_list[position]。 只要記住:__init__不應該永遠返回,Python中的所有東西都是object,也列出;您可以使用.表示法或getattr內置方法訪問列表中元素的屬性。

UPDATE:要知道一個迭代對象的長度,使用len()

+0

謝謝。這是我的第一個面向對象程序,有些事情對我來說還不清楚,但現在我明白了。 – detsales70

+0

請問,如果我需要執行print(team.playerlist),我應該修改什麼? @tuned – detsales70