공부/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'가 생성되고 이 변수에 값을 대입하게 된다.