클래스 질문
클래스의 생성자 강의 내용 중에서,
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
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__의 color와 taste 매개변수로 전달됩니다.
결과적으로,
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")는
클래스의 생성자
__init__을 호출하면서"red"와"strawberry"를 인수로 전달함.생성자
__init__내부에서self.color = color,self.taste = taste로 저장됨.새로운
TeddyBearJelly인스턴스가 생성되고, 이 객체가jelly리스트에 저장됨.
결론
"red"와 "strawberry"는
__init__메서드의 인수로 전달되는 값클래스의 인스턴스를 생성하는 과정이 함수 호출과 유사
따라서 함수의 인수와 비슷한 개념이라고 이해하는 것이 맞습니다.
2. print(jelly[0].color)에서 .color의 의미는?
jelly[0].color에서 .color는 jelly 리스트의 첫 번째 객체(TeddyBearJelly 인스턴스)의 color 속성에 접근하는 것입니다.
print(jelly[0].color) # 'red' 출력
print(jelly[0].taste) # 'strawberry' 출력
이 표현이 함수의 호출 방식(함수())과 유사해 보일 수 있지만, 속성에 접근하는 방식일 뿐 함수 호출과는 다릅니다.
.color가 self.color = color와 관련이 있는가?
네, 관련이 있습니다!
클래스 내부에서 self.color = color라고 정의하면, 각 인스턴스에 color라는 속성이 생깁니다.
즉, TeddyBearJelly("red", "strawberry")을 만들면, 내부적으로 다음과 같이 저장됩니다.
# TeddyBearJelly("red", "strawberry") 생성 시
인스턴스.color = "red"
인스턴스.taste = "strawberry"
그래서 jelly[0].color는 jelly[0]이라는 TeddyBearJelly 객체의 color 속성에 접근하여 "red"를 가져오는 것입니다.
화이팅입니다!!! :)
SSL 발급할때 HTTP로 진행하는 이유가 궁금합니다.
0
7
2
plan mode 관련 질문 드립니다.
0
8
1
rules 파일 관련 질문입니다!
0
11
1
단일표본검정, 샤피로검정, 윌콕슨검정
0
16
2
강의자료 다운로드 여부
0
11
1
51강 7분 custom 스타일 질문
0
10
0
모델 차이 궁금증
0
15
2
settings.json 파일
0
14
1
플러그인 설치 관련
0
8
1
파이썬 문법과 기본 개념을 학습한 이후에는 어떤 방향으로 심화 학습을 하는 것이 좋을지 궁금합니다.
1
80
1
리스트를 복사할 때 a = b 와 a = b[:] 의 차이는 무엇인가요?
1
88
1
파이썬에서 객체의 참조(reference)와 할당(assignment)의 차이
2
109
1
파이썬에서 함수의 매개변수 기본값을 설정할 때 주의해야 할 점은 무엇인가요?
1
85
2
얕은 복사(Shallow Copy)와 깊은 복사(Deep Copy)의 차이
2
247
2
변수 선언에 관련한 질문.
1
98
2
for-else는 언제 쓰나요?
1
89
2
요즘 바이브코딩이 대세인데 파이썬을 배워야하는 이유가 뭘까요?
1
257
1
코드에서 오류를 찾는 팁이 있을까요?
2
81
2
순회 중 리스트 수정은 왜 위험한지 궁금합니다.
1
91
2
range함수 관련
2
123
1
포맷팅 질문
2
61
1
if 질문
2
93
1
set 질문
2
72
2
딕셔너리 반복자 질문
2
63
1

