티스토리 뷰
파이썬의 클래스는 애트리뷰트를 저장할 수 있는 특수 함수 __dict__ 를 가지고 있다.
이 속성에 클래스의 자체 애트리뷰트를 저장할 수 있다.
그리고 특수 함수 __getattr__, __setattr__ 를 이용하여 해당 값을 가지고 온다.
사용자가 클래스를 생성할 때 이 값들을 오버라이딩하여 재정의 할 수도 있다.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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']) |
반응형
'python > 코드조각' 카테고리의 다른 글
[python] yyyymmdd 일자별 문자열 리스트 생성 방법 (0) | 2018.05.15 |
---|---|
[python/코드조각] 상속과 부모의 생성자 호출, 메소드 재정의 (0) | 2018.05.10 |
[python/코드조각] open() 을 이용하여 파일 읽기 (0) | 2018.05.09 |
[python] 처리 시간의 평균 구하기 (1) | 2016.10.04 |
[python] time, datetime, timedelta (0) | 2015.06.19 |
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- nodejs
- java
- 오류
- Tez
- bash
- 백준
- SPARK
- Linux
- HDFS
- emr
- SQL
- airflow
- 하이브
- error
- yarn
- 정올
- AWS
- 하둡
- hbase
- mysql
- 알고리즘
- Python
- build
- Hadoop
- oozie
- 다이나믹
- ubuntu
- HIVE
- 파이썬
- S3
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함