Skip to content

Latest commit

 

History

History
50 lines (34 loc) · 1.89 KB

2022.07.14.md

File metadata and controls

50 lines (34 loc) · 1.89 KB

정적 메소드


정적 메소드는 클래스 메소드나 인스턴스 메소드와 달리 어떤 변수도 사용하지 않는 메소드다. 또 자동으로 전달되는 파라미터가 없다. 정적 메소드를 사용하려면 메소드 위에 @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 외에는 모두 불변 타입 객체이고, 직접 만드는 클래스로 객체를 만들면 모두 가변 타입 객체가 된다.