[Python] 클래스 속성과 정적, 클래스 메서드 사용하기

클래스 속성과 정적, 클래스 메서드 사용하기

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

클래스 속성 사용하기

class className:
    attribute = value

class Person:
    bag = []
    
    def pub_bag(self, stuff):
        self.bag.append(stuff)

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

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

print(james.bag)
print(maria.bag)

>> ['책', '열쇠']
>> ['책', '열쇠']

image-123456

인스턴스 속성 사용하기

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

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

정리

클래스 속성

인스턴스 속성

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

class Knight:
    __item_limit = 10 # 비공개 클래스 속성
		
    def print_item_limit(self):
        print(Knight.__item_limit) # 클래스 안에서만 접근 가능

정적 메서드 사용하기

클래스 메서드 사용하기

class Person:
    count = 0 # 클래스 속성

    def __init__(self):
        Person.count += 1 # 인스턴스가 만들어질 때, 클래스 속성 count에 1을 더함

    @classmethod
    def print_count(cls):
        print('{0}명 생성되었습니다.'.format(cls.count)) # cls로 클래스 속성에 접근

참고사항

객체 인스턴스를 통해 클래스 변수를 수정하려고 시도하는 것, 즉 실수로 이름이 같은 인스턴스 변수를 만들어서 원래 클래스 변수를 가리키는 것은 파이썬 객체 지향 프로그래밍의 함정이다.

출처