본문으로 바로가기
728x90

클래스란?

클래스는 객체 지향 프로그래밍에서 특정 객체를 생성하기 위해 변수와 함수를 정의하는 일종의 이다.

 

Color 클래스 정의하고 red, green, blue 라는 Color 객체를 생성해보았습니다. 

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')
    
    red_rgb = red.get_rgb()
    green_rgb = green.get_rgb()
    blue_rgb = blue.get_rgb()
    print(red.name, red_rgb)
    print(green.name, green_rgb)
    print(blue.name, blue_rgb)
더보기
red (255, 0, 0)
green (0, 255, 0)
blue (0, 0, 255)

 

클래스의 네임스페이스

이름을 확인할 때는 __name__ 을 사용합니다. (클래스, 함수 등)

>>> Color.__name__
'Color'

 

Color 의 네임스페이스(이름공간)는 다음과 같습니다. __dict__

정의된 인스턴스 함수 'get_rgb', 클래스 속성 'rgb'

>>> import pprint
>>> pprint.pprint(Color.__dict__)
mappingproxy({'__dict__': <attribute '__dict__' of 'Color' objects>,
              '__doc__': 'This is Color class.',
              '__init__': <function Color.__init__ at 0x0000018913FCCE18>,
              '__module__': '__main__',
              '__weakref__': <attribute '__weakref__' of 'Color' objects>,
              'get_rgb': <function Color.get_rgb at 0x0000018913FCC950>,
              'rgb': {'blue': (0, 0, 255),
                      'green': (0, 255, 0),
                      'red': (255, 0, 0)}})

 

객체의 네임스페이스

'name' 은 red 객체의 인스턴스 속성입니다.

>>> red = Color('red')
>>> red.__dict__
{'name': 'red'}
>>> red.name
'red'

 

객체가 속한 클래스(모듈)

>>> red.__class__
<class '__main__.Color'>
>>> __name__
'__main__'