about Python Class

부서진·2022년 9월 27일
0

Python

목록 보기
1/1

출처: 입문자를 위한 딥러닝 정주행 Kit
출처: 한 번에 끝내는 데이터 사이언스 초격차 패키지 Online.

Class 란?

  • 실세계의 것을 모델링하여 속성(attribute)와 동작(method)를 갖는 데이터 타입
  • Python에서의 string, int, list, dict... 모두가 다 클래스로 존재
  • 예를 들어 학생이라는 클래스를 만든다면, 학생을 나타내는 속성과 학생이 행하는 행동을 함께 정의할 수 있음
  • 따라서 다루고자 하는 데이터(변수)와 데이터를 나누는 연산(함수)를 하나로 캡슐화(encapsulation)하여 클래스로 표현
  • 모델링에서 중요시 하는 속성에 따라 클래스의 속성과 행동이 각각 달라짐

Object 란?

  • 클래스로 생성되어 구체화된 객체 (인스턴스)
  • Python의 모든 것(int, str, list... etc)은 객체 (인스턴스)
  • 실제로 class가 인스턴스화되어 메모리에 상주하는 상태를 의미
  • class가 빵틀이라면, object는 실제로 빵틀로 찍어낸 빵이라고 비유 가능

Class 선언하기

  • 객체를 생성하기 위해선 객체의 모체가 되는 class를 미리 선언해야 함

init(self)

  • 생성자, 클래스 인스턴스가 생성될 때 호출됨
  • 생성자에서는 해당 클래스가 다루는 데이터를 정의
    * 이 데이터를 멤버 변수(member variable) 또는 속성(attribute)라고 함

self

  • Python의 method는 항상 첫 번째 인자로 self를 전달
  • self는 현재 해당 method가 호출되는 객체 자신을 가리킴
  • C++/C#, Java의 this에 해당
  • 이름이 꼭 self일 필요는 없지만, 관례적으로 self로 사용

method 정의

  • 멤버 함수라고도 하며, 해당 클래스의 object에서만 호출 가능
  • method는 객체 레벨에서 호출되며, 해당 객체의 속성에 대한 연산을 행함
  • {obj}.{method}() 형태로 호출됨

method type

  • instance method - 객체로 호출
    • 해당 method를 호출한 객체에만 영향을 미침
  • class method(static method) - class로 호출
    • 클래스 레벨로 호출되기 때문에, 클래스 멤버 변수만 변경 가능

Class inheritance (상속)

  • 기존에 정의해둔 클래스의 기능을 그대로 물려받을 수 있다.
  • 기존 클래스에 기능 일부를 추가하거나, 변경하여 새로운 클래스를 정의한다.
  • 코드를 재사용할 수 있게 된다.
  • 상속 받고자 하는 대상인 기존 클래스는 Parent, Super, Base class라고 부른다.
  • 상속 받는 새로운 클래스는 Child, Sub, Derived class라고 부른다.
  • 의미적으로는 is-a관계를 갖는다.

method override

  • 부모 클래스의 method를 재정의 (override)
  • 하위 클래스(자식 클래스)의 인스턴스로 호출 시, 재정의된 메소드가 호출됨

super

  • 하위 클래스(자식 클래스)에서 부모 클래스의 method를 호출할 때 사용

special method

ML/DL Project 실무에서의 활용

0개의 댓글