2013-12-23 9 views
0

나는 OOP 프로그래밍을 처음 접했고 파이썬에서 다형성을 이해하려고 노력하고있다. 온라인에서 찾은 모든 튜토리얼은 이처럼 매우 모호해 보인다. How does polymorphism work in Python?, 다형성의 아이디어를 이해하는 데 도움이된다. 그런데이를 Tkinter 나 다른 모듈들에 어떻게 적용해야합니까? 누군가 Tkinter에서 다형성의 좋은 예를 설명해 줄 수 있습니까?Tkinter로 파이썬 다형성

- 고마워요.

답변

0

다형성은 CS에서 다소 다형성 개념입니다. OO에 관해서는 주로 'polymorphic type-based dispatch'를 의미합니다. 즉, 속성의 메소드/해상도의 구체적인 구현은 객체의 유형에 따라 런타임에 선택됩니다. 예를 들어 :

whatever(Baaz()) 

whatever() 작품 : whatever()를 modifiy하지 않고

class Baaz(object): 
    def do_this(self): 
     return -1 

whatever()에 전달 :

class Foo(object): 
    def do_this(self): 
     return 42 

class Bar(object): 
    def do_this(self): 
     return 84 

def whatever(*objects): 
    for obj in objects: 
     print obj.do_this() 

objects = [Foo(), Bar()] 
whatever(*objects) 

점은 지금 새로운 클래스를 만들 수 있다는 것입니다 어떤 객체라도 do_this(self) 메소드를 가지고 있고, do_this()의 정확한 구현은 b에 의해 자동으로 선택됩니다. eing은 객체 자체를 찾았습니다.

순수 절차 적 코드와 비교해 :

def foo_do_this(foo): 
    return 42 

def bar_do_this(bar): 
    return 84 

def whatever(*objects): 
    for obj in objects: 
     if obj.__class__.__name__ == "Foo": 
      print foo_do_this(obj) 
     elif obj.__class__.__name__ == "Bar":  
      print bar_do_this(bar) 
     else: 
      print "dont know how to handle '%s', sorry" % (obj.__class__.__name__) 

내가 xxx_do_this()의 새로운 구현을 수용 할 whatever()을 편집해야합니다.

내가 Tkinter를 사용하지 않기 때문에 아니,이, Tkinter를 다형성 의 "좋은 예가 아니다 -하지만 당신은 위의 예제를 이해한다면 당신은 Tkinter를 다형성 꽤 몇 가지 예를 발견 할 수 있어야한다 거의 모든 파이썬 모듈이나 패키지와 마찬가지로.

+0

Tkinter의 다형성 * 예 : – joaquin

+0

cf 나의 마지막 단락 –

+0

초보자의 경우 tkinter는 일반적인 클래스 상속 예제보다 약간 복잡합니다. Tk 최상위 도구, GUI 프레임 워크와 관련된 응용 프로그램 메인 루프 및 기타 자료 – joaquin

관련 문제