2015-02-20 2 views
-2

У меня есть класс участника следующим образом:Добавить объект одного класса в объект другого класса в Python

class Participant: 

    def __init__(self,name,level): 

     self.name = name 
     self.level =level 

У меня есть еще один класс команды следующим образом:

class Team: 

    def __init__(self,name): 

     self.name = name 

Я хочу создать метод в классе Team, чтобы добавить экземпляр класса Participant; например:

Предполагается, что myTeam является пустым, действительным экземпляром команды. предположим также myParticipant1 является действительным экземплярами Участника

myTeam.addParticipant(participant= myParticipant1) 

AddParticipant метод должен добавить экземпляр myParticipant1 к экземпляру myTeam.

Как я могу получить его на Python?

+0

Вы уверены, что вы хотите, что иерархия наследования? –

+0

Не уверен, что если это может быть достигнуто без этого, я могу это сделать – Souriez23

+0

. Взаимоотношения наследования подразумевают, что ребенок может использоваться везде, где может использоваться родитель, поэтому то, что вы просите вместе с этим кодом, означает, что вы хотите иметь команду, составленную из команд. –

ответ

0

Помимо вопросов о наследовании, о которых мы говорим в комментариях, это довольно простой материал.

class Participant(object): 
    def __init__(self, name, level): 
     self.name = name 
     self.level = level 

class Team(object): 
    def __init__(self, name): 
     self.name = name 
     self.participants = [] 

    def add_participant(p): 
     self.participants.append(p) 

DEMO:

my_team = Team("Monty Python") 
p_info = [("Adam", 10e5), ("Joe-bob", -1)] 
participants = [Participant(name, level) for name, level in p_info] 

for participant in participants: 
    my_team.add_participant(participant) 
    # say that 10 times fast.... 

In [1]: [p.name for p in my_team.participants] 
Out[1]: ["Adam", "Joe-bob"] 
+0

Для дополнительного кредита добавьте метод '__iter__', который позволяет вам выполнять итерацию непосредственно над командой. Или просто выведите 'Team' из' list'. – kindall

+0

@kindall right, но я не уверен, что 'Team' является списком, я просто знаю, что у него есть список :) –

+0

Да, он может иметь другие компоненты, такие как ресурсы или оборудование, которые также являются списками. :-) – kindall

Смежные вопросы