클래스 : 제품의 설계도
객체 : 설계도로 만든 제품
한개의 설계도로 여러개의 제품을 만들 수 있다.
즉, 하나의 클래스로부터 여러개의 객체를 만들어낼 수 있다.
클래스 용어
클래스 | 제품의 설계도 |
객체 | 설계도로 만든 제품 |
속성 | 클래스안의 변수 |
메서드 | 클래스안의 함수 |
생성자 | 객체를 만들 때 실행되는 함수 |
인스턴스 | 메모리에 살아있는 객체 |
클래스 만들기
메서드이름 뒤의 괄호 안에는 항상 self를 매개변수로 가지고 있는다.
self는 객체 자기자신을 말하는 것으로 메서드들의 첫번째 매개변수는 객체 자기자신이 들어간다.
class 클래스이름:
def 메서드이름(self):
명령블록
객체 = 클래스이름() : 이걸 실행하고 나면 객체가 나오는데 그 객체를 변수에 할당해주는 것이다.
객체.메서드() : .은 ~의라고 해석하면 된다. 객체의 메서드를 호출한다.
shark = Monster() # shark라는 객체를 Monster 클래스로부터 만들었다.
shark.say() # shark의 say 메서드
속성 추가하기
init : 생성자 함수, name : 속성값
self.name = name : Moster클래스의 name이 속성이 들어가게 된것이다.
class Monster:
def __init__(self, name):
self.name = name # 객체 자기자신의 name이라는 속성은 init 함수로 부터 받은 name으로 할당하겠다.
def say(self):
print(f'나는 {self.name}') # self.name은 Monster 클래스의 속성
shark = Monster("상어") # Monster 클래스로 부터 객체를 만들어 내는데, 매개변수로 상어를 넣어주겠다.
shark.say() # shark의 say 메서드를 호출하겠다.
shark = Monster(”상어”)를 해주면 제일 먼저 호출되는건 생성자 def init (self, name):이다.
상어 데이터가 name자리로 들어가고, name은 self.name = name의 name으로 간다.
self자리에는 만들고 있는 객체인 shark가 들어간다.
즉, shark 객체의 이름 속성은 상어다.