[python]class(2)

전상욱·2021년 4월 20일
0

Python

목록 보기
11/14

클래스에 속해 있는 클래스 속성에 대해 알아보자. 인스턴스를 만들지 않고 클래스로 호출하는 정적메서드 / 클래스 메서드 알아보기.
(참고: 속성은 클래스 속성/ 인스턴스 속성 2개가 있고 init 메서드에서 만들었던 속성은 인스턴스 속성이다.)

정적메서드
기본적인 class 를 공부할때 클래스의 매서드는 인스턴스를 통해서 호출했다. 이번에는 인스턴스를 통하지 않고 클래스에서 바로 호출할 수 있는 정적 메서드와 클래스 메서드 공부하자.

class 클래스이름:
	@staticmethod # 데코레이터 (함수에 추가 기능을 구현 할 때)
    def 메서드(매개변수1, 매개변수2):
    	표현코드
  • 클래스.메서드()
    정적 메서드는 self를 받지 않으므로 인스턴스 속성에는 접근할 수 없습니다. 인스턴스 속성이나 인스턴스 메서드가 필요 없을 때 사용합니다.
    정적메서드는 메서드의 실행이 외부 상태에 영향을 끼치지 않는 순수함수를 만들 때 사용.즉, 인스턴스의 상태를 변화시키지 않는 메서드를 만들 때 사용한다.
class Calc:
    @staticmethod
    def add(a,b):
        print(a + b) 

    @staticmethod
    def mul(a, b):
        print(a * b) 

Calc.add(1,2)
Calc.mul(1,2)

클래스 메서드

class 클래스이름:
	@classmethod
   	def 메서드(cls, 매개변수1, 매개변수2):
    	코드
  • 차이점
    정적메서드 vs 클래스메서드 인스턴스 없이 호출할 수 있다는 점은 같습니다. 하지만 클래스 메서드는 메서드 안에서 클래스 속성, 클래스 메서드에 접근해야 할 때 사용합니다.
    특히, cls를 사용하면 메서드 안에서 헌재 클래스의 인스턴스를 만들 수 있다.
profile
someone's opinion of you does not have to become your reality

0개의 댓글