참고자료
Python OOP Method
- python opp에서 내부 메소드가
instance
, class
, static
크게 3가지로 나뉨
Instance method
- self == 본인 객체
- 일반적으로 가장 많이 사용하게 되는 유형
- instance가 생성되고 호출이 되는 method
- 해당 메서드를 호출한 객체에만 영향을 미친다
self
인자를 통해 __init__
에서 정의한 인스턴스 변수에 접근할 수 있음
- 용도: 인스턴스 혹은 변수의 따라서 다르게 동작해야하는 매서드
Class method
- cls →
@classmethod
데코레이터를 사용하여 선언 가능
- 클래스 매서드의 첫 번째 매개변수는 본인 클래스
- 인스턴스 없이 호출 가능. 해당 클래스로 생성된 객체로 부터 호출이 되는 것이 아니라 클래스 자체에서 직접 호출
cls
를 사용하면 매서드 안에서 현재 클래스의 인스턴스 생성 가능
- 클래스 메소드는 인스턴스 변수나 메소드에 접근할 수 없지만 클래스 변수에 접근이 가능
cls.클래스 속성명
으로 클래스 속성에는 접근이 가능
- 용도: 인스턴스 내부적인 데이터(변수)하고 상관없이 동작하는 매서드
Static method
- 앞서 설명한 두 메소드와는 다르게 인스턴스나 클래스를 첫 번째 인자로 받지 않음
- 인스턴스 선언 후 사용해도 되고 선언하지 않고도 사용 가능
- 얼핏 보면 @classmethod와 큰 차이가 없어보임
- 스택틱 메소드는 클래스 안에서 정의되어 클래스 네임스페이스 안에 있을 분 사실 상 일반 함수
- 하지만 클래스와 연관성이 있는 함수를 클래스 안에 정의하여 클래스나 인스턴스를 통해서 호출하여 조금 더 편하게 사용 가능
- 인스턴스나 클래스 자체에 아무런 영향을 미치지 않을 때 스태틱 메소드를 사용