작성
·
110
·
수정됨
0
class player : #player라는 클래스를 만듦
def __init__(self,name,team): ############ #player라는 클래스를 시작할 때 변수로 name과 team을 받고 self는 dong이다.
self.name = name #name = "donghyeon"
self.xp = 1500
self.team = team #team = "blue"
print(name)
def introduce(self) : #self = dong
print(f"Hello I'm {self.name} and I play for {self.team}") #위에서 정의한 self.name = "donghyeon" self.team = "blue"
class Team : #Team이란 클래스를 만듦
def __init__(self,team_name): #Team이란 클래스를 시작할 때 변수로 self와 team_name을 받고 self=blue team_name = "blue"
self.players = [] #self.players는 빈 리스트이고
self.team_name = team_name #sef.team_name = blue
def show_player(self): #self = blue
print(self)
for player in self.players :
player. introduce()
def add_player(self,name): ##################### #self=blue
new_player = player(name,self.team_name)
print(name)
self.players.append(new_player)
dong = player ("donghyeon","blue")
blue = Team("blue")
def add_player(self,name): ##################### #self=blue
new_player = player(name,self.team_name)
이 부분을 어떻게 생각해야되는 걸까요?
클래스 player와 연결되어있는 것 같은데
player 괄호 안 변수들 name과 self.team_name은
둘 다 player 클래스에서 받아온 것이라고 생각하기에는 player 클래스 내에 sefl.team_name이 없어서 잘 모르겠습니다
아니면 player에서는 name과 team을 받아야되는데
team은 클래스 team 내에 있는 team_name을 받아오는 것인가요?
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
김동현님 질문하신 파이썬 클래스 파라미터에 대해서 설명드릴게요.
def add_player(self, name): ##################### #self=blue
new_player = player(name, self.team_name) # 여기서 player 클래스의 인스턴스를 생성합니다.
위 코드에서 add_player
메서드는 Team
클래스의 메서드이며, 새로운 player
인스턴스를 생성할 때 사용됩니다. Team
클래스의 인스턴스인 blue
객체는 self.players
리스트에 player
인스턴스들을 담고 있습니다.
name
파라미터는 새로 만들 player
인스턴스의 이름으로 전달되며,self.team_name
은 Team
클래스 인스턴스 blue
에 있는 team_name
속성값을 player
클래스의 team
파라미터로 전달합니다.즉, self.team_name
은 Team
클래스에서 team_name
이라는 이름으로 시작된 속성인데, 이를 player
클래스의 생성자에 team
이라는 이름의 파라미터로 넘겨주고 있습니다. player
클래스 내에 self.team_name
이 정의되어 있지 않아도 문제 없이 team
파라미터로 전달받은 값을 self.team
에 저장할 수 있습니다.
따라서, player(name, self.team_name)
은 name
과 self.team_name
을 player
클래스의 생성자에 전달하여 player
객체를 생성하고, 이를 self.players
리스트에 추가하는 것입니다.
player
클래스 내에 self.team_name
이 명시적으로 정의되지 않았다고 혼동하실 필요 없이, player
클래스의 생성자가 받는 파라미터 team
에 Team
클래스의 team_name
속성 값을 전달하여, 각 player
객체가 속한 팀 정보를 설정하는 것입니다.
이해가 되셨길 바랍니다. 추가적인 질문이 있으시다면 언제든 문의해주세요.