클래스 속성과 인스턴스 속성 알아보기

속성에는 클래스 속성과 인스턴스 속성이 있다. __init__으로 만들었던 속성이 인스턴트 속성이다.

클래스 속성 사용하기

클래스 속성은 클래스에 속해있는 모든 인스턴스들이 공유한다.

class Person:
    bag = []

    def put_bag(self, stuff):
        self.bag.append(stuff)

james = Person()
james.put_bag('책')

maria = Person()
maria.put_bag("열쇠")

print(james.bag)
print(maria.bag)
['책', '열쇠']
['책', '열쇠']

클래스 속성에 접근할 떄 self를 사용하는것 보다 클래스 이름으로 접근하는게 좀더 명확하다.

class Person:
    bag = []

    def put_bag(self, stuff):
        Person.bag.append(stuff)

james = Person()
james.put_bag('책')

maria = Person()
maria.put_bag("열쇠")

print(Person.bag)
['책', '열쇠']

<aside> 💡

파이썬에서 속성, 메서드 이름을 찾을 때 인스턴스, 클래스 순으로 찾는다. 인스턴스와 클래스에서 __dict__ 속성을 출력해 보면 현재 인스턴스와 클래스의 속성을 딕셔너리로 확인할 수 있다.

</aside>

인스턴스 속성 사용하기

모든 클래스와 공유하기 싫으면 인스턴스 속성으로 만들어 주면 된다.

class Person:
    def __init__(self):
        self.bag = []

    def put_bag(self, stuff):
        self.bag.append(stuff)

james = Person()
james.put_bag('책')

maria = Person()
maria.put_bag("열쇠")

print(james.bag)
print(maria.bag)
['책']
['열쇠']

비공개 클래스 송성 사용하기

class Knight:
    __item_limit = 10

    def print_item_limit(self):
        print(Knight.__item_limit)

x = Knight()
x.print_item_limit()

클래스와 메서드의 독스트링 사용하기

함수와 마찬가지로 클래스와 메서드도 독스트링을 사용할 수 있다.