둘 다 인스턴스를 만들지 않고도 실행할 수 있는 클래스의 method를 정의한다

class PlusTen:
	num=10
	@staticmethod
	def calc(x):
		return x + 10
print(PlusTen.calc(10)) # 20
-------------------------------------------------------------------------------
class PlusTen:
	num=10
	@classmethod
	def calc(cls, x):
		return x + 10

print(PlusTen.calc(10)) # 20

둘 다 인스턴스 생성 없이 실행했고, 결과값도 같은데, classmethod에서 cls라는 인자가 추가되었다

저 num이라는 변수에 접근하려면 어떻게 구현해야할까?

  1. 정적변수로 접근
class PlusTen:
	num=10
	@staticmethod
	def calc(x):
		return x + 10 + PlusTen.num

print(PlusTen.calc(10)) # 30
  1. class method에서 cls속성으로 접근
class PlusTen:
	num=10
	@classmethod
	def calc(cls, x):
		return x + 10 + cls.num

print(PlusTen.calc(10)) # 30

상속시

class PlusTen:
	num=10
	@classmethod
	def calc(cls, x):
		return x + 10 + cls.num

class PlusTen_2(PlusTen):
	num=20
	
print(PlutTen_2.clac()) # ??

이렇게되면 어떤 값이 출력될까?

같은 이름의 변수가 PlusTen_2에 있더라도 cls.num은 상속받은 PlusTen의 num을 사용한다

cls를 사용할경우 상속받은 클래스부터 변수를 찾기 때문에

40이 출력될 것이다.