용어 | 설명 |
---|---|
클래스(Class) | 제품 설계도 |
객체(Object) | 설계도로 만든 제품 |
속성(Attribute) | 클래스 안 변수 |
메서드(Method) | 클래스 안 함수 |
생성자(Constructor) | 객체를 만들 때 실행되는 함수 |
인스턴스(Instance) | 메모리에 살아있는 객체 |
🚨주의🚨 : 클래스에서의 생성자와 제너레이터(Generator)
- 생성자(Constructor) : 객체 생성 시 실행되는 함수
- 생성자(Generator) : 반복자(Iterator) 생성 함수, "yield 키워드 사용"
참고: 객체와 인스턴스의 차이를 면밀하게 보면..
- 객체 : 선언 형태 그대로 생성, 모든 인스턴스 포함, 클래스 타입으로 선언되면 객체
- 인스턴스 : 클래스로 구현된 구체적 실체, 객체 실체화한 것이 인스턴스, 객체가 메모리에 할당되어서 실제 사용되면 인스턴스!
class 클래스이름:
def 메서드이름(self):
명령블록
# 첫 클래스 만들기
class Aiffel: # 클래스 이름은 대문자로 시작!
def cheer(self):
print('끝까지 화이팅!')
# 클래스 출력은 객체를 만들고 그 객체에 메서드를 붙여야 한다!
객체 = 클래스 이름()
객체.메서드() # '객체의 메서드'로 해석하기
python = Aiffel()
python.cheer()
AiffelGood
와 같은 캐멀 케이스 사용(이렇게 안해도 오류는 안나지만 개발자 간의 약속!)생성자 메서드 : __init__
python = Aiffel()
처럼 객체를 만들 때 호출되는 메서드앞의 __
self.속성
self.name = name
!속성값을 받는 매개변수
와 속성 자체를 받는 속성 이름
을 동일하게 작성!name
에 전달해보자.객체를 만들기 위해 클래스 할당 -> 자동으로 생성자 메서드 호출
a. 생성자 메서드가 돌면서 속성값 '김인유'
가
b. 생성자 메서드의 2번째 매개변수인 name
에 입력되어
c. 속성 self.name
을 생성!
cheer
메서드를 호출하는 python.cheer()
실행 -> cheer
메서드에 python
이 자동으로 삽입되어서 -> self.new
속성을 쓸 수 있음.
Aiffel()
클래스에 김인유를 넣은 객체인 python 생성__init__
호출__init__
생성자가 호출되어self
에 python
객체 입력되고name
에 김인유
입력된다!self.name
이 python.name
으로 완성되어 python
에 할당python
객체의 cheer
메서드 호출python
객체가 자동으로 매개변수 self
에 들어온다!cheer
메서드에서 print(f"{self.new}, 끝까지 화이팅!")
출력!cheer
메서드 결과값 출력!