__dict__
속성 출력해보면 현재 인스턴스와 클래스의 속성을 딕셔너리로 확인 가능class 클래스이름:
속성 = 값
클래스이름.클래스변수
로 사용예시
class Person:
bag = []
def put_bag(self, stuff):
Person.bag.append(stuff)
human1 = Person()
human1.put_bag('책')
human2 = Person()
human2.put_bag('열쇠')
print(human1.__dict__)
print(human2.__dict__)
print(Person.__dict__)
print(human1.bag) #겉보기에는 인스턴스 속성을 사용하는 것 같지만 클래스 속성 사용
print(human2.bag) #겉보기에는 인스턴스 속성을 사용하는 것 같지만 클래스 속성 사용
print(Person.bag)
#출력 결과
#{}
#{}
#{'__module__': '__main__', 'bag': ['책', '열쇠'], 'put_bag': <function Person.put_bag at 0x01DAC4A8>, '__dict__': <attribute '__dict__' of 'Person' objects>, '__weakref__': <attribute '__weakref__' of 'Person' objects>, '__doc__': None}
#['책', '열쇠']
#['책', '열쇠']
#['책', '열쇠']
__init__
)에서 self.속성
에 할당했던 변수들은 모두 인스턴스 속성에 해당예시
class Person:
def __init__(self):
self.bag = []
def put_bag(self, stuff):
self.bag.append(stuff)
human1 = Person()
human1.put_bag('책')
human2 = Person()
human2.put_bag('열쇠')
print(human1.__dict__)
print(human2.__dict__)
print(Person.__dict__)
print(human1.bag)
print(human2.bag)
#출력 결과
#{'bag': ['책']}
#{'bag': ['열쇠']}
#{'__module__': '__main__', '__init__': <function Person.__init__ at 0x01DDC4F0>, 'put_bag': <function Person.put_bag at 0x01DDC4A8>, '__dict__': <attribute '__dict__' of 'Person' objects>, '__weakref__': <attribute '__weakref__' of 'Person' objects>, '__doc__': None}
#['책']
#['열쇠']
참고
https://dojang.io/mod/page/view.php?id=2378
https://wikidocs.net/16072