2017년 2월 20일 월요일

[Python]네임스페이스와 상속


1)Name Space
파이썬 IDLE에서 dir() 내장 함수를 호출해보면 리스트로 된 반환값을 확인할 수 있습니다. 여기서 두 개의 언더바로 시작하는 것은 파이썬에서 이미 사용 중인 특별한 것들입니다. 이를 제외하고 보면 조금 전에 정의했던 Stock 클래스의 이름이 포함된 것을 확인할 수 있습니다.
>>> dir()
['Stock', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__']
Stock 클래스의 네임스페이스를 파이썬 코드로 확인하려면 클래스의 __dict__ 속성을 확인하면 됩니다. 딕셔너리 타입에 'market':'kospi'라는 키와 값 쌍이 존재하는 것을 확인할 수 있습니다.
>>> Stock.__dict__
mappingproxy({'market': 'kospi', '__module__': '__main__', '__dict__': <attribute '__dict__' of 'Stock' objects>, '__doc__': None, '__weakref__': <attribute '__weakref__' of 'Stock' objects>})


2)Inheritance

일단 노래를 잘 부르는 부모 클래스가 있다고 생각해 봅시다.
>>> class Parent:
        def can_sing(self):
                print("Sing a song")
 
Parent 클래스를 정의했으니 클래스의 인스턴스를 생성해 보겠습니다. 그리고 노래를 정말 할 수 있는지 메서드를 호출해 확인해 보겠습니다.
>>> father = Parent()
>>> father.can_sing()
Sing a song
이번에는 노래를 잘 부르는 Parent 클래스로부터 상속받은 운이 좋은 자식 클래스를 정의해 봅시다. 클래스의 이름은 LuckyChild라고 하겠습니다. 
>>> class LuckyChild(Parent):
        pass
Parent 클래스로부터 상속받은 LuckyChild 클래스에 대한 인스턴스를 생성한 후 노래를 시켜보겠습니다. 중요한 점은 현재 LuckyChild 클래스에는 어떤 메서드도 존재하지 않는다는 것입니다. 다음 코드를 보면 역시나 부모 클래스로부터 상속받아서 그런지 자신은 메서드를 포함하고 있지 않지만 바로 노래를 부를 수 있군요.
>>> child1 = LuckyChild()
>>> child1.can_sing()
Sing a song



댓글 없음:

댓글 쓰기