Inflearn brand logo image

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

나연님의 프로필 이미지
나연

작성한 질문수

[왕초보] [누적 5,000명+] Python 프로그래밍 기초 완성 로드맵

클래스 질문

해결된 질문

작성

·

24

2

클래스의 생성자 강의 내용 중에서,

 

1. 젤리 리스트 형식에서

jelly=[teddy_jelly('red', 'strawberry'), teddy_jelly('yellow','lemon')]의 teddy_jelly('red', 'strawberry') 이 부분은 함수의 인수로 이해하면 될까요. 그것을 젤리라는 변수에 담은 것으로요.

 

2. 그리고 jelly인스턴스 속성에 접근하는 방법에서 print(jelly[0].color)는 위의 리스트에서 0번째 위치의 color값을 의미할텐데 .color의 형식이 함수의 표기와 비슷합니다. 이 부분이 맨 위 매소드 작성 시 self.color=color라고 작성한 부분과 관련이 있는지, 아니면 그냥 단순 작성 규칙인 지 질문드립니다.


답변 1

2

Selena님의 프로필 이미지
Selena
지식공유자

1. teddy_jelly('red', 'strawberry')는 함수의 인수인가요?

 

네, 함수의 인수와 비슷한 개념으로 이해할 수 있습니다.

teddy_jelly('red', 'strawberry')는 **클래스의 생성자(__init__ 메서드)**를 호출하여 teddy_jelly 클래스의 인스턴스를 생성하는 코드입니다.

 

class TeddyBearJelly:
    def __init__(self, color, taste):
        self.color = color
        self.taste = taste

jelly = [
    TeddyBearJelly("red", "strawberry"),
    TeddyBearJelly("yellow", "lemon"),
    TeddyBearJelly("green", "apple")   
]

 

이때, TeddyBearJelly("red", "strawberry")함수를 호출하는 방식과 비슷하지만, 실제로는 생성자 __init__을 실행하여 객체(인스턴스)를 만드는 과정입니다.

 

즉, "red""strawberry"__init__colortaste 매개변수로 전달됩니다.

결과적으로,

jelly 리스트에는 TeddyBearJelly 클래스의 인스턴스들이 저장됩니다.



왜 함수의 인수와 비슷한 개념인가?

 

생성자는 일반적인 함수처럼 동작하며, __init__ 메서드는 클래스의 객체를 초기화하는 역할을 합니다.

 

즉, 아래 코드를 보면:

 

class TeddyBearJelly:
    def __init__(self, color, taste):  # color와 taste는 인수
        self.color = color
        self.taste = taste

jelly = [
    TeddyBearJelly("red", "strawberry"),  # "red", "strawberry"가 인수로 전달됨
    TeddyBearJelly("yellow", "lemon"),
    TeddyBearJelly("green", "apple")   
]

 

이때 TeddyBearJelly("red", "strawberry")

  1. 클래스의 생성자 __init__을 호출하면서 "red""strawberry"인수로 전달함.

  2. 생성자 __init__ 내부에서 self.color = color, self.taste = taste로 저장됨.

  3. 새로운 TeddyBearJelly 인스턴스가 생성되고, 이 객체가 jelly 리스트에 저장됨.

 

결론

  • "red"와 "strawberry"는 __init__ 메서드의 인수로 전달되는 값

  • 클래스의 인스턴스를 생성하는 과정이 함수 호출과 유사

  • 따라서 함수의 인수와 비슷한 개념이라고 이해하는 것이 맞습니다.


 

2. print(jelly[0].color)에서 .color의 의미는?

 

jelly[0].color에서 .colorjelly 리스트의 첫 번째 객체(TeddyBearJelly 인스턴스)의 color 속성에 접근하는 것입니다.

 

print(jelly[0].color)  # 'red' 출력
print(jelly[0].taste)  # 'strawberry' 출력

 

이 표현이 함수의 호출 방식(함수())과 유사해 보일 수 있지만, 속성에 접근하는 방식일 뿐 함수 호출과는 다릅니다.

 


 

.colorself.color = color와 관련이 있는가?

 

네, 관련이 있습니다!

 

클래스 내부에서 self.color = color라고 정의하면, 각 인스턴스에 color라는 속성이 생깁니다.

즉, TeddyBearJelly("red", "strawberry")을 만들면, 내부적으로 다음과 같이 저장됩니다.

 

# TeddyBearJelly("red", "strawberry") 생성 시
인스턴스.color = "red"
인스턴스.taste = "strawberry"


그래서 jelly[0].colorjelly[0]이라는 TeddyBearJelly 객체의 color 속성에 접근하여 "red"를 가져오는 것입니다.


화이팅입니다!!! :)

나연님의 프로필 이미지
나연

작성한 질문수

질문하기