강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

김동현님의 프로필 이미지
김동현

작성한 질문수

파이썬 클래스 파라미터 질문

작성

·

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_nameTeam 클래스 인스턴스 blue에 있는 team_name 속성값을 player 클래스의 team 파라미터로 전달합니다.

즉, self.team_nameTeam 클래스에서 team_name이라는 이름으로 시작된 속성인데, 이를 player 클래스의 생성자에 team이라는 이름의 파라미터로 넘겨주고 있습니다. player 클래스 내에 self.team_name이 정의되어 있지 않아도 문제 없이 team 파라미터로 전달받은 값을 self.team에 저장할 수 있습니다.

따라서, player(name, self.team_name)nameself.team_nameplayer 클래스의 생성자에 전달하여 player 객체를 생성하고, 이를 self.players 리스트에 추가하는 것입니다.

player 클래스 내에 self.team_name이 명시적으로 정의되지 않았다고 혼동하실 필요 없이, player 클래스의 생성자가 받는 파라미터 teamTeam 클래스의 team_name 속성 값을 전달하여, 각 player 객체가 속한 팀 정보를 설정하는 것입니다.

이해가 되셨길 바랍니다. 추가적인 질문이 있으시다면 언제든 문의해주세요.

김동현님의 프로필 이미지
김동현

작성한 질문수

질문하기