클래스(Class)
- 사용자가 정의하는 새로운 타입
- 클래스 명은 주로 CamelCase로 작성 (첫글자 대문자 띄어뜨기 대신 대문자)
- int, bool, str, float, list, ... -> 파이썬에서 미리 만들어진 클래스
ex) find = str 클래스의 메서드
- 클래스는 붕어빵 틀, 객체는 기입하는 붕어빵 재료로 비유할 수 있음
- 인스턴스(instance) = 클래스로 만들어낸 객체
※ 인스턴스는 a in [인스턴스] 꼴로 인스턴스 내의 데이터를 불러올 수 있음 (for문 사용시)
- 메서드(method) = 클래스에서 물려받은 함수
- __init__ = 생성자 함수 = 생성할 객체의 필드의 초기값 설정
※ __init__ 설정시 첫 매개변수는 반드시 self로 입력해야함
- isinstance(변수, 클래스) = 해당변수의 클래스가 지정한 클래스와 일치하는지 판별
은닉성
- 공개하고 싶지 않은 속성에 _를 입력하면 외부에서 조회 불가능
ex) __init__(self,name):
self.name = name 인 상태에서
B = A('마') (A라는 클래스에 B라는 인스턴스를 정의 했을경우)
-> B.name = 마
하지만 self._name = name으로 변경한 후 다시 실행하면 -> B.name = error
- _name으로 정의되어 있어서 출력이 불가능하면 데이터 출력함수(getter)를 따로 정의해야함
ex) def print_name(self):
return self._name -> B.print_name = 마
- _name으로 정의되어 있어서 B._name = '가'와 같이 간단하게 name을 변경하고 싶은데 _name이라는 변수명을 몰라 바꾸지 못할 경우를 대비하여 데이터 변경함수(setter)를 따로 정의
ex) def change_name(self, C):
self._name = 'C' -> B.print_name = C
- @property과 @getter함수명.setter를 이용하여 앞선 getter와 setter를 간단하게 사용할 수 있음
def print_name(self): @property
return self._name -----> def print_name(self):
def change_name(self, C): return self._name
self._name = 'C' @print_name.setter
def print_name(self, C):
self._name = 'C'
식으로 기능을 유지한채 변경가능함
즉, B.print_name으로 출력이 가능하고 B.print_name = 'C'로 변경이 가능해져 하나의 함수로 출력과 변경이 모두 가능.
- @property를 적용하면 getter함수와 setter함수 모두 마지막에 ()없이 클래스명.getter함수명으로 입력
상속
- super() = 부모와 자식 클래스 사이에 속성, 함수 등을 물려주는 역할
- super().__init__() = 부모 클래스의 생성자를 자동으로 불러와 자식 클래스에서도 사용 가능
- super().함수명() = 부모 클래스의 함수를 자식 클래스에서 사용 가능
- static method = 한번 만들어놓으면 자식 클래스에서도 같은 방식으로 동작
- class method = 해당 클래스에 맞게 메서드가 다른 지점을 참조하여 동작
'빅데이터 부트캠프 > Python' 카테고리의 다른 글
빅데이터 부트캠프 13일차 (0) | 2022.07.20 |
---|---|
빅데이터 부트캠프 12일차 (0) | 2022.07.19 |
빅데이터 부트캠프 10일차 (0) | 2022.07.15 |
빅데이터 부트캠프 9일차 (0) | 2022.07.14 |
빅데이터 부트캠프 8일차 (0) | 2022.07.13 |
댓글