메소드의 종류에는
- 인스턴스 메소드
- 클래스 메소드
- 정적 메소드
- 이 3가지가 있다는 것
이 글은 3가지 중에서 정적 메소드에 대한 글이다.
정적 메소드는 인스턴스 변수, 클래스 변수를 전혀 다루지 않는 메소드입니다.
정적 메소드는 메소드 정의 위에 @staticmethod 데코레이터를 표시해야 합니다.
정적 메소드는
- 인스턴스 메소드의 self
- 클래스 메소드의 cls
같은 자동 전달되는 파라미터가 없습니다.
# 인스턴스 메소드
def __str__(self):
return "사용자: {}, 이메일: {}, 비밀번호: ******".format(self.name, self.email)
# 클래스 메소드
@classmethod
def number_of_users(cls):
print("총 유저 수는: {}입니다".format(cls.count))
# 정적 메소드
@staticmethod
def is_valid_email(email_address):
return "@" in email_address
User 클래스에는 인스턴스 메소드, 클래스 메소드, 정적 메소드가 있습니다.
- 인스턴스 메소드 __str__는 인스턴스 변수인 self.name, self.email을 사용하고,
- 클래스 메소드 number_of_user는 클래스 변수인 cls.count를 사용합니다.
- 하지만 is_valid_email 메소드에선 아무 변수도 사용하고 있지 않네요.
인스턴스 변수나 클래스 변수 중 아무것도 사용하지 않을 메소드라면 정적 메소드로 만들면 됩니다.
그러니까 어떤 속성을 다루지 않고, 단지 기능(행동)적인 역할만 하는 메소드를 정의할 때 정적 메소드로 정의하면 됩니다
'객체 지향 프로그래밍 시리즈' 카테고리의 다른 글
SNS 맞팔 하는 코드 | 객체 지향 프로그래밍 시리즈 004 (1) | 2021.07.21 |
---|---|
인스턴스 메소드 | 객체 지향 프로그래밍 시리즈 003 (0) | 2021.07.21 |
클래스? 인스턴스? | 객체 지향 프로그래밍 시리즈 002 (2) | 2021.07.21 |
객체란? 무엇인가? | 객체 지향 프로그래밍 시리즈 001 (0) | 2021.07.21 |