6.10 메서드 타입

  • 클래스 정의에서 메서드의 첫 번째 인자가 self라면 이 메서드는 인스턴스 메서드 일반적인 메서드 타입이다. 인스턴스에만 영향을 미친다.
  • 클래스 메서드는 클래스 전체에 영향을 미친다. @classmethod 데커레이터가 있따면 클래스 메서드. 첫 번째 매개변수는 클래스 자신. 보톤 cls로 표시 함.
    class A():
    count = 0
    def __init__(self):
    A.count += 1
    def exclaim(self):
    print("I'm an A!")
    @classmethod
    def kids(cls):
    print("A has", cls.count, "little objects")
    
    easy_a = A()
    breezy_a = A()
    wheezy_a = A()
    A.kids()
    

    A has 3 little objects

  • 세번 째 타입은 클래스나 객체에 영향을 미치지 못한다. 단지 편의를 위해 존재 한다.
  • @staticmethod 데커레이터가 붙어 있고 첫번째 매개변수로 self나 cls가 없다.
    class CoyoteWeapon():
    @staticmethod
    def commericial():
    print('This CoyoteWeapon has been brought to you by Acme')
    
    CoyoteWeapon.commericial()
    

    This CoyoteWeapon has been brought to you by Acme

Comments