classmethod
class Robot:
population = 0
def __init__(self, name, code):
self.name = name
self.code = code
Robot.population += 1
def say_hi(self):
print(f"Hi!,my master call me {self.name}")
def cal_add(self, a, b):
return a + b
def die(self):
print(f"{self.name} is being destroyed")
Robot.population -= 1
if Robot.population == 0:
print(f"{self.name} was last one.")
else:
print(f"There are still {Robot.population} robots working.")
@classmethod
def how_many(cls):
print(f"We have {cls.population} robots")
print(Robot.population)
siri = Robot("Siri", 1234123)
jarvis = Robot("jarvis", 5231535)
bixby = Robot("bixby", 50310433)
print(Robot.population)
Robot.how_many()
- 데코레이터 classmethod를 통해 클래스 변수를 생성할 수 있다.
- 인스턴스 변수 및 인스턴스 메서드는 각각의 인스턴스 고유의 공간에 생성된 것이다.
- 클래스,인스턴스를 통해 접근 할 수 있다.(인스턴스로 접근시instance.class.method 형식)
staticmethod
class StaticMethod:
@staticmethod
def print_name(name):
return "내 이름은 {} 입니다.".format(name)
print(StaticMethod.print_name("minsoo"))
me = StaticMethod()
print(me.print_name("minsoo"))
- cls(클래스),self(인스턴스)를 인자로 받지 않는다.
- 클래스,인스턴스를 통해 접근 할 수 있다.