본문 바로가기
빅데이터 부트캠프/Python

빅데이터 부트캠프 11일차

by Mecodata 2022. 7. 18.

클래스(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 = 해당 클래스에 맞게 메서드가 다른 지점을 참조하여 동작

 

댓글