SOCO

정적메서드, 클래스메서드, 데코레이터 본문

카테고리 없음

정적메서드, 클래스메서드, 데코레이터

ssooda 2021. 7. 9. 21:03

1. 기본형 : 클래스, 메서드

클래스에서 메서드를 정의할 때 1번째 매개변수는 self매개변수임(해당 객체)

메서드를 호출할 때 주로 객체를 만들어서 객체를 통해 호출했음(방법1)

class Person :
	def say_hello(self) : #self는 객체자리임
    	print("hello")

a = Person()		#객체생성

a.say_hello()		#함수호출 방법1

Person.say_hello(a) #함수호출 방법2

 

2. 정적메서드 

메서드 위에 @staticmethod

정적 메서드는 매개변수 self를 지정하지 않음

class Calc :
	@staticmethod
    def add(a,b) :
    	print(a+b)
    
    @staticmethod
    del mul(a,b) :
    	print(a*b)

Calc.add(10,20)
Calc.mul(10,20)

 

3. 클래스매서드

메서드 위에 @classmethod

클래스 메서드는 첫 번째 매개변수로 cls를 지정해야함

class Person :
	count = 0
    
    def __init__(self) :
    	Person.count +=1 
    
    @classmethod
    def print_count(cls) :
    	print("{}명 생성되었습니다." .format(cls.count))

james = Person()
maria = Person()

Person.print_count() #별도의 객체 없이 호출 가능

클래스 매서드는 주로 클래스변수와 관련된 작업을 처리할 때 쓰는 것 같다

클래스 매서드는 별도의 객체를 생성하지 않고 호출할 수 있다

때문에 개별 객체의 고유한 값이 아니라 클래스의 객체 전체가 공유하는 변수인 클래스 변수를 처리할 때 용이한 것 같다.