2017-10-15 7 views
0

J'essaie d'apprendre la POO et je ne peux pas savoir comment initialiser une liste contenant des attributs initialisés dans une autre classe.Comment initialiser une liste contenant des instances d'une autre classe?

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) 

Donc, si je l'appelle par print(Team([Player("Player1", [2, 3]), Player("Player2", [3, 1]])) que dois-je écrire après self.playerlist= pour obtenir la liste? Très désolé pour une mauvaise explication, je suis un débutant.

+0

ne peux pas vous sauver juste l'objet d'une équipe à une 'team' variables puis écrire' team.playerlist'? Est-ce tout ce que vous essayez de faire? – Carcigenicate

+0

Vous passez déjà une liste de joueurs dans l'argument 'playerlist'. Pourquoi ne peux-tu pas juste l'assigner à 'self.playerlist'? Pourquoi pensez-vous que vous devez faire autre chose? –

+0

Il suffit d'écrire 'self.playerlist = playerlist' dans le constructeur, supprimez le' return' puisque vous ne pouvez pas retourner explicitement d'un constructeur, alors écrivez simplement 'team.playerlist' pour obtenir la liste. – Carcigenicate

Répondre

1

Remplir ce que vous avez déjà codé:

... 
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] 

Pour accéder aux membres d'une liste, la position est utilisée, à partir de 0: some_list[position]. Rappelez-vous juste: __init__ ne reviendra jamais jamais et tout est un object en Python, aussi des listes; vous pouvez accéder aux propriétés d'un élément dans une liste en utilisant la notation . ou la méthode intégrée getattr.

MISE À JOUR: pour connaître la longueur d'un objet itérable utiliser len()

+0

Merci. C'est mon premier programme OO, et certaines choses ne sont pas claires pour moi, mais maintenant je comprends .. – detsales70

+0

S'il vous plaît, pourriez-vous m'aider ce que je devrais modifier si j'ai besoin de faire imprimer (team.playerlist) '? @tuned – detsales70