<클래스>
클래스란 하나의 틀로서 객체(인스턴스)를 생성하기 위한 틀이다. 틀을 통해 객체를 만드는 데 있어서 클래스의 사용은 같은 경우에는 불필요한 반복 작업을 줄여준다.
클래스의 구조는 객체의 구조(변수)와 행동(함수)을 정의한다. 현실 사물에 있는 객체(인스턴스)를 프로그램상으로 옮기는 작업이라고 생각하면 된다.
또한 클래스는 생성자를 통해 초기화가 필요하다.
class 에서는 def __init__ 함수가 사용된다. 이 부분은 명시적으로 쓰지 않으면 묵시적으로 생성자가 존재한다. 그때는
__init__(self): 로만 정의된 생성자 초기화 함수이다. 클래스에서는 기본적으로 생성자 호출을 통해 객체를 생성한다.
이 생성자를 거쳐야만 객체라는 것이 생긴다. 여기서 self는 자기 자신을 나타낸다. 고로 self.name은 인스턴스의 name을 매개변수 name이라는 것을 받아서 넣는다는 것을 의미한다.
위에 정의해놓은 클래스를 생성자 호출(__init__)을 통해 객체를 생성하고 있다. 그리고 만들어진 객체에 대해서 서로 다른 주소 값을 가진다. 서로 다른 객체이기 때문이다.
그리고 dir을 사용하면 내장되어 있는 함수를 볼수있는데 내가 지정해놓은 def 외에 다른 __?__ 것들이 있는 것이 보인다. 이것 같은 경우에는 클래스에는 기본적으로 상속을 받는 object라는 것이 있다. 이 object는 내장 함수로서 class의 기본 구성 요소가 된다. 이것이 들어가서 dir을 했을 때 내가 만든 함수 외에도 다른 함수들이 들어가 있다.
이 두가지의 appy_raise , getEmpgetEmp의 함수를 만들었다. appy_raise는 클래스의 변수인 raise_rate를 받아 사용하고 있다.
이때 클래스의 변수를 사용하기 위해서는 해당 변수가 어떤 변수인지 명시해줘야 한다. 여기서는 Employee의 변수로서 나타내 진다.
해당 함수를 객체를 통해 호출한다.
classmethod / staticmethod
정적 메서드는 클래스에서 직접 접근할 수 있는 메서드이다. (원래 클래스에서 함수를 접근할 수없다. 보통 소유의 주체가 인스턴스 이기 때문이다. )
classmethod
classmethod는 @classmethod라는 데코레이터를 사용하여 정의할 수 있다.
인스턴스 메서드와 달리 self라는 인자 대신 cls라는 인자를 가진다
staticmethod
파이썬에서 staticmethod는 아래와 같이 @staticmethod라는 데코레이터를 사용하여 정의할 수 있다. 인스턴스 메서드와 달리 self라는 인자를 가지고 있지 않다.
staticmethod의 경우 부모 클래스의 클래스 속성 값을 가져오지만 classmethod의 경우 cls인자를 활용하여 현재 클래스의 클래스 속성을 가져온다.
# 객체를 생성하지 않고 클래스에 접근하는 방법
# 리모컨 예제
'Base > Python' 카테고리의 다른 글
[Python] 파이썬 기초 12 - 예외처리 (0) | 2020.08.19 |
---|---|
[Python] 파이썬 기초 11 - 객체의 4대 특성 ( 상속화, 캡슐화, 다형성, 추상화) (0) | 2020.08.18 |
[Python] 파이썬 기초 9 - 패키지와 모듈에 대한 정의와 다양한 함수 형태 (0) | 2020.08.13 |
[Python] 파이썬 기초 8 - 반복문(for , while)에 대한 정의와 기본적인 함수 사용법출처 (0) | 2020.08.12 |
[Python] 파이썬 기초 7 - 조건문(IF, elif ,else)에 대한 정의와 기본적인 함수 사용법 (0) | 2020.08.11 |