728x90
인스턴스 변수란?
객체가 가지는 속성이며, 클래스를 정의할 때 생성자(__init__) 내부에 정의합니다.
class Color():
'''This is Color class.'''
rgb = {
'red': (255, 0, 0),
'green': (0, 255, 0),
'blue': (0, 0, 255)
}
def __init__(self, name):
self.name = name
def get_rgb(self):
return Color.rgb[self.name]
if __name__ == '__main__':
red = Color('red')
green = Color('green')
blue = Color('blue')
print(red.__dict__)
print(green.__dict__)
print(blue.__dict__)
더보기
{'name': 'red'}
{'name': 'green'}
{'name': 'blue'}
생성자 안에 인스턴스 변수를 정의할 때는 변수 앞에 self 를 붙입니다.
생성자의 self 매개변수는 실제 객체가 들어갑니다.
def __init__(self, name):
self.name = name
접근은 다음과 같이.
>>> red = Color('red')
>>> red.name
'red'
객체가 가지는 인스턴스 변수들 확인. __dict__
>>> red.__dict__
{'name': 'red'}
클래스 변수란?
클래스가 가지는 속성이며, 모든 객체가 공유합니다.
다음 Color 클래스는 rgb 라는 클래스 변수를 가집니다.
class Color():
'''This is Color class.'''
rgb = {
'red': (255, 0, 0),
'green': (0, 255, 0),
'blue': (0, 0, 255)
}
접근은 다음과 같이.
>>> Color.rgb
{'red': (255, 0, 0), 'green': (0, 255, 0), 'blue': (0, 0, 255)}
클래스의 네임스페이스 확인
>>> import pprint
>>> pprint.pprint(Color.__dict__)
mappingproxy({'__dict__': <attribute '__dict__' of 'Color' objects>,
'__doc__': 'This is Color class.',
'__init__': <function Color.__init__ at 0x000001D3A1C6F1E0>,
'__module__': '__main__',
'__weakref__': <attribute '__weakref__' of 'Color' objects>,
'get_rgb': <function Color.get_rgb at 0x000001D3A1C6F6A8>,
'rgb': {'blue': (0, 0, 255),
'green': (0, 255, 0),
'red': (255, 0, 0)}})
다음 예제에서
객체는 인스턴스 함수 get_rgb() 를 호출하고 get_rgb() 함수는 클래스 변수인 rgb에 접근하여 해당 값을 가져옵니다.
class Color():
'''This is Color class.'''
rgb = {
'red': (255, 0, 0),
'green': (0, 255, 0),
'blue': (0, 0, 255)
}
def __init__(self, name):
self.name = name
def get_rgb(self):
return Color.rgb[self.name]
if __name__ == '__main__':
red = Color('red')
green = Color('green')
blue = Color('blue')
print(red.name, red.get_rgb())
print(green.name, red.get_rgb())
print(blue.name, red.get_rgb())
더보기
red (255, 0, 0)
green (255, 0, 0)
blue (255, 0, 0)
다음 같이 사용할 수도 있습니다.
class Color():
'''This is Color class.'''
color_list = []
def __init__(self, name):
self.name = name
Color.color_list.append(name)
if __name__ == '__main__':
red = Color('red')
green = Color('green')
blue = Color('blue')
print('Color')
print(f'count : {len(Color.color_list)}')
print(f'list : {Color.color_list}')
더보기
Color
count : 3
list : ['red', 'green', 'blue']
정리
- 인스턴스 변수는 객체가 가지는 속성이다.
- 클래스 변수는 클래스가 가지는 속성이며, 모든 객체가 공유한다.
'Language > Python' 카테고리의 다른 글
파이썬 langdetect(언어감지) 모듈 소개 (0) | 2020.07.13 |
---|---|
파이썬 print() 로 간단한 진행바 구현 (0) | 2020.07.11 |
파이썬 클래스 정의하기 네임스페이스 __dict__ (0) | 2020.07.10 |
파이썬 map, filter 함수 사용하기 - comprehension (0) | 2020.07.10 |
파이썬 람다 표현식 사용하기 lambda (0) | 2020.07.10 |