본문 바로가기
객체 지향 프로그래밍 시리즈

정적 메소드(Method) | 객체 지향 프로그래밍 시리즈 005

by @ENFJ 2021. 7. 21.

메소드의 종류에는

  • 인스턴스 메소드
  • 클래스 메소드
  • 정적 메소드
  • 이 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 클래스에는 인스턴스 메소드, 클래스 메소드, 정적 메소드가 있습니다.

  1. 인스턴스 메소드 __str__는 인스턴스 변수인 self.name, self.email을 사용하고,
  2. 클래스 메소드 number_of_user는 클래스 변수인 cls.count를 사용합니다.
  3. 하지만 is_valid_email 메소드에선 아무 변수도 사용하고 있지 않네요.

인스턴스 변수나 클래스 변수 중 아무것도 사용하지 않을 메소드라면 정적 메소드로 만들면 됩니다.

그러니까 어떤 속성을 다루지 않고, 단지 기능(행동)적인 역할만 하는 메소드를 정의할 때 정적 메소드로 정의하면 됩니다