클래스 외부에 있는 isAdult()
와
내부에 있는 @staticmethod isAdult()
는 결과가 같다.
가독성 등의 편의를 위해 클래스 내부에 작성할 때 @staticmethod를 쓴다.
from datetime import date
def isAdult(age): # 클래스 외부
return age > 20
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
@classmethod
def fromBirthYear(cls, name, birthYear):
return cls(name, date.today().year - birthYear)
# Person(name, age올해-출생연도)
@staticmethod # 클래스 내부
def isAdult(age): # self가 들어가지 않는다.
return age > 20
me = Person('angel', 35)
you = Person.fromBirthYear('angel', 1986)
print(me.age)
print(you.age)
# (29) > 20?
print(Person.isAdult(29)) # True
print(isAdult(29)) # True
35
36
True
True