Type
- Integer, Float, String, Boolean, List, Set, Tuple, Dictionary...
- Type = Class
- Object = Instance
- Method = Member Function
Fucntion isinstance()
- isinstance(a,b) : a가 클래스 b의 인스턴스인지 논리값을 출력
>>> isinstance('abc',str)
True
>>> isinstance('abc',float)
False
Class
- 클래스는 고유의 속성(attribute)과 동작(method)를 갖는 데이터타입으로 객체를 만들어내는 틀이다
- 객체(인스턴스)는 클래스로부터 만들어지는 대상
Variable in class
-
클래스에는 객체변수와 클래스변수가 있다
-
객체 변수(= instance variable)는 객체마다 각각 지정되는 속성으로 각 객체를 구분한다
클래스 내부에서 self.variable_name으로 정의된다
-
클래스 변수(= member variable)는 클래스의 객체들이 공유하는 클래스 공통의 속성이다
클래스 내부에서 사용할 때 class_name.member_variable로 사용한다
Methods
- 클래스에서 정의되는 함수
- 메소드를 정의할 때, 첫번째 파라미터는 self를 입력해야한다. self는 클래스의 객체를 의미함
- 클래스 내부에서는 self.mehtod()로 외부에서는 instance.method()로 호출한다.
- 정의할때 입력한 self는 호출할 때는 입력하지않는다.(dot앞에 객체를 지정했기때문)
Inheritance
- 클래스의 속성, 메소드를 물려주는 상위 클래스의 내용을 하위 클래스가 그대로 가지는 것
- 상위 클래스 : super class, base class, parents class
- 하위 클래스 : sub class, derived class, child class
- 하위 클래스는 상위 클래스의 메소드와 변수를 정의하지않아도 사용이 가능
- 모든 클래스는 Python(object)의 하위클래스
- 하위 클래스에 변수를 정의할 때 상위 클래스의 메소드를 하위클래스에서 사용할 수 있도록 고려하여 정의한다
Override and Overload
- Override : 상위 클래스의 메소드를 재정의하는 것
- Overloading : 상위 클래스의 메소드를 매개변수에 따라 다른 기능으로 동작할 수 있게 하는 것
- super().method_name(parameter) : 상위 클래스의 메소드를 하위 클래스에서 호출
__init__ method(Constructor, 생성자)
- 클래스가 만들어질 때 자동으로 실행되는 메소드
- 클래스의 객체를 만들때 생성자의 파라미터를 입력해야 객체를 만들 수 있다.
- 객체변수를 정의할때 생성자에 정의한다. (다른 방법도 있지만 생성자에 정의하는 것을 권장)
Magic methods
- 파이썬(object)에서 이미 구현된 연산자나 메서드를 클래스 내부에서 오버로딩하는 것
- __str__ : 객체를 문자열로 반환하는 메서드. print(객체)시 호출됨
- __add__ : +연산자 사용시 호출되는 메서드
- __mul__ : *연산자 사용시 호출되는 메서드
- __sub__ : -연산자 사용시 호출되는 메서드
- __truediv__ : /연산자 사용시 호출되는 메서드
- __floordiv__ : //연산자 사용시 호출되는 메서드
- __mod__ : %연산자 사용시 호출되는 메서드
- __gt__ : >연산자 사용시 호출되는 메서드
- __ge__ : >= 연산자 사용시 호출되는 메서드
- __lt__ : < 연산자 사용시 호출되는 메서드
- __le__ : <= 연산자 사용시 호출되는 메서드
- __eq__ : ==연산자 사용시 호출되는 메서드
- __ne__ : != 연산자 사용시 호출되는 메서드
- 파이썬은 기본적으로 public. 즉, 접근에 제한이 없다. 이때 클래스에서 일부 데이터나 함수를 외부에서 접근하지 못하도록 private variable 이나 private method로 정의하는 것이 information hiding.
- Private variable 또는 method는 변수,함수명 앞에 __를 붙여 정의한다.
- Private variable에 접근하기 위해서는 개발자만이 아는 Getter, Setter함수를 정의한다.
Polymorphism(다형성)
- 다형성이란 같은 이름의 메서드나 연산자를 다른 클래스에서 다르게 구현하는 것
- 즉, 서로 다른 클래스에서 같은 이름의 메서드를 호출했을 때, 서로 다른 결과가 반환되는 것