정적 메소드는 클래스 메소드나 인스턴스 메소드와 달리 어떤 변수도 사용하지 않는 메소드다. 또 자동으로 전달되는 파라미터가 없다. 정적 메소드를 사용하려면 메소드 위에 @staticmethod 를 붙인다.
class User:
count = 0
def __init__(self, name, email, pw):
self.name = name
self.email = email
self.pw = pw
User.count += 1
def say_hello(self):
print("안녕하세요! 저는 {}입니다!".format(self.name))
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.is_valid_email(kcy1760@naver.com)
user1.is_valid_email(kcy1760@naver.com)
파이썬은 순수 객체지향 언어로서 모든 것이 객체라고 할 수 있다. 그 중에서도 가변 타입이 있고 불변 타입이 있는데, 가변 타입은 한 번 생성한 이후로 바꿀 수 있는 반면 불변 타입은 바꿀 수 없다.
대표적인 가변 타입 객체로 리스트가 있고, 불변 타입 객체로 튜플이 있다.
다만 튜플의 '속성'을 변경할 수 없는 것이지(튜플의 n번 째 요소를 변경할 수 없다는 뜻) 튜플 객체 자체에 새로운 것을 지정해줄 수는 있다.
파이썬 내에서 이미 만들어져 있는 클래스 중 list 와 dictionary 외에는 모두 불변 타입 객체이고, 직접 만드는 클래스로 객체를 만들면 모두 가변 타입 객체가 된다.