2017-10-15 19 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) 

だから私は、私はリストを取得するためにself.playerlist=後に書くべきかprint(Team([Player("Player1", [2, 3]), Player("Player2", [3, 1]]))でそれを呼び出す場合は?説明が悪いのは残念ですが、私は初心者です。あなたは既に符号化したものを完了

+0

を使用知るには?それはあなたがしようとしていることですか? – Carcigenicate

+0

'playerlist'引数に既にプレーヤーのリストを渡しています。なぜそれを 'self.playerlist'に割り当てることができないのですか?なぜあなたは何か他のことをする必要があると思いますか? –

+0

'self.playerlist = playerlist'をコンストラクタに書くだけで、コンストラクタから明示的に返すことができないので、' return'を削除してから 'team.playerlist'を書いてリストを取得してください。 – Carcigenicate

答えて

1

some_list[position]

... 
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から始まり、使用されています。 ちょうど覚えておいてください:__init__はこれまでに返されず、すべてがPythonのobjectです。 .表記法またはgetattr組み込みメソッドを使用して、リスト内の要素のプロパティにアクセスできます。

UPDATE:反復可能なオブジェクトの長さは、その後 `team.playerlist`を書くあなただけの` team`変数にチームのオブジェクトを保存することはできませんlen()

+0

ありがとうございました。それは私の最初のオブジェクト指向プログラムであり、いくつかのことは私には分かりませんでしたが、今私は理解しています。 – detsales70

+0

'print(team.playerlist)'を実行する必要がある場合、私は何を修正すべきですか? @tuned – detsales70

関連する問題