[python] 클래스(class)와 객체(object)

프로그래밍/python|2020. 4. 2. 10:36

클래스(class)는 틀, 객체(object)는 틀로 찍어낸 결과물로 볼 수 있습니다. 붕어빵 틀을 가지고는 붕어빵을 만들어낼 수 있고, 호두과자 틀로는 호두과자를 만들어낼 수 있듯이, 우리는 클래스로 객체를 찍어낼 수 있습니다. 클래스라는 틀만 만들어놓으면 말이죠. 또한 붕어빵 틀을 가지고 팥붕어빵, 크림붕어빵, 김치붕어빵 등을 만들어낼 수 있듯이, 클래스를 이용해서 모양은 같지만 내용은 다른 객체들을 찍어낼 수 있습니다.  

 

저는 사람이라는 클래스와 포켓몬이라는 클래스를 만든 후에 몇 명의 사람과 몇 마리의 포켓몬을 찍어내는 코드를 작성해봤습니다. 사람 클래스에는 자기소개 메서드(함수로 이해하셔도 괜찮습니다)와 포켓몬 수집 메서드를 포함시켜놨고, 포켓몬 클래스에는 자기소개 메서드와 공격 메서드를 포함시켜놨습니다. 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
class Person:
    def __init__(self, name):
        self.name = name
        
    def introduce(self):
        print("안녕! 나는 " + self.name + "야.")
    
    def catch(self, pokemon_name):
        print(pokemon_name + ", 넌 내거야~!\n")
 
class Pokemon:
    def __init__(self, name):
        self.name = name
        
    def introduce(self):
        print("얍! 나는 " + self.name + "!")
        
    def attack(self, pokemon_name):
        print(pokemon_name + ", 내 공격을 받아랏!\n")
    
 
p1 = Person("지우"# 객체 찍어내기
p2 = Person("이슬"# 객체 찍어내기
p3 = Person("웅"# 객체 찍어내기
 
p1.introduce()
p1.catch("피카츄")
 
p2.introduce()
p2.catch("고라파덕")
 
p3.introduce()
p3.catch("마자용")
 
m1 = Pokemon("이상해씨"# 객체 찍어내기
m2 = Pokemon("리자몽"# 객체 찍어내기
m3 = Pokemon("모래두지"# 객체 찍어내기
 
m1.introduce()
m1.attack("또또가스")
 
m2.introduce()
m2.attack("야도란")
 
m3.introduce()
m3.attack("나옹")
cs

 

실행결과 다음과 같은 내용이 출력되었습니다. 

 

 

클래스라는 틀에 의해 세 명의 사람과 세 마리의 포켓몬이 잘 찍어내졌음을 확인하실 수 있을 것입니다.