티스토리 뷰

파이썬의 클래스는 애트리뷰트를 저장할 수 있는 특수 함수 __dict__ 를 가지고 있다. 

이 속성에 클래스의 자체 애트리뷰트를 저장할 수 있다. 


그리고 특수 함수 __getattr__, __setattr__ 를 이용하여 해당 값을 가지고 온다. 

사용자가 클래스를 생성할 때 이 값들을 오버라이딩하여 재정의 할 수도 있다. 


#!/usr/bin/python
class God():
def __init__(self):
self.race = "God"
self.age = 1000
self.name = 'Zeus'
class Person():
def __init__(self):
self.race = 'human'
self.age = 30
self.name = 'Edward'
class DemiGod(God):
def __init__(self):
super().__init__()
self.name = "heraclues"
def __getattr__(self, attr):
# __getattr__ 를 재정의 하여 __dict__의 값을 반환하도록 수정
if attr in self.__dict__:
return self.__dict__[attr]
return None
# 신
g = God()
print(g.race)
# 사람
p = Person()
print(p.race)
# 반인반신
d = DemiGod()
print(d.name)
print(d.race)
# 속성 추가
d.power = "thunder"
print(d.power)
# Person 객체는 __getattr__ 를 오버라이딩 하지 않았기 때문에 속성으로 데이터를 가져가는 것은 불가
# __dict__ 를 이용하여 데이터 출력
p.power = "run"
print(p.__dict__)
print(p.__dict__['power'])
view raw class_attr.py hosted with ❤ by GitHub




반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함