Archive

[파이썬 기초] 클래스 본문

공부/Python

[파이썬 기초] 클래스

mariabeetle 2017. 10. 3. 15:57

1. 객체지향

- 하나의 객체(오브젝트) 안에 여러 가지 기능을 가진 데이터와 메서드(함수)가 들어 있다.

- 가장 먼저 클래스를 선언하자.

- 그리고 함수와 변수를 클래스 안에서 정의하자.

- 메서드(method)는 def를 사용해 선언한다.

- 클래스 안에 있는 메서드를 정의할 때 첫 번째 인수로 반드시 self를 지정해야 한다.

- 변수를 속성(Property)라 부른다.


2. 클래스로 오브젝트를 생성한다

1
2
3
4
5
6
7
# Human이라는 클래스를 기초로 하여 오브젝트를 생성한다.
 
hum = Human()
 
# Human 클래스 안에 정의한 메서드를 호출한다.
hum.take("banana")
hum.eat()
cs
- 객체지향에서 클래스를 기반으로 생성한 오브젝트를 '인스턴스'라고 부른다.

- 하나의 클래스를 정의하면 인스턴스를 얼마든지 생성할 수 있다.


3. self 인수

- 'self'인수는 인스턴스 자신을 나타낸다.

1
2
3
4
5
6
7
8
9
10
11
12
13
# 클래스를 정의한다
class HumanName:
    def setName(self, name):
        self.name = name
    
    def getName(self):
        return self.name
 
gildong = HumanName()
gildong.setName("Gildong")
print(gildong.getName())
 
# Gildong
cs

4. 생성자 - 인스턴스를 초기화하는 메서드

- 데이터를 준비하는 작업을 '초기화 메서드'라고 부르는 메서드에서 실시한다.

- 인스턴스를 초기화하는 메서드를 '생성자(constructor)'라고 부른다.

- '__init()__'메서드 이다.(인스턴트를 생성할 때 자동으로 init메서드가 실행된다.)


5. 클래스 변수와 인스턴스 변수

- 인스턴스 변수 : 인스턴스마다 서로 다른 값을 설정할 수 있게 준비해둔 변수

- 클래스 변수 : 모든 인스턴스에서 공통으로 사용하는 변수

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Cat:
    # 클래스 변수
    cat_sound = "nya-"
    # 메서드
    def sounds(self):
        print(Cat.cat_sound)
 
mike = Cat()
mike.sounds() # nya-
 
nora = Cat()
nora.sounds() # nya-
 
# 클래스 변수 변경
Cat.cat_sound = "myu-"
 
# 모든 인스턴스에서 값이 변경
nora.sounds() # myu-
mike.sounds() # myu-
cs
- 클래스 변수는 '클래스명.클래스 변수명'이라는 형식으로 값을 참조하고 대입할 수 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Cat:
    # 클래스 변수
    cat_sound="nya-"
    # 메서드
    def sounds(self):
        print(self.cat_sound)
 
mike = Cat()
nora = Cat()
 
# 울음소리 변경
mike.cat_sound = "myu-"
mike.sounds() # myu-
nora.sounds() # nya-
cs
- 위 처럼 '인스턴스.변수명 = 값'이라는 형식을 코딩하면 클래스 변수가 아닌 인스턴스 변수에 대입하는 것으로 간주한다.

- 여기서 'mike.cat_sound'에 값을 대입했을 때 클래스 변수 'cat_sound'가 아닌, 이름만 같고 다른 변수인 인스턴스 변수 'cat_sound'가 생성되고 이 변수에 값을 대입하게 된다.


Comments