2017-10-25 14 views
0

파생 클래스가 특정 기본 클래스를 상속받은 기본 클래스에서 pdb로 인쇄 할 수 있습니까?파생 클래스가 기본 클래스에서 pdb로 인쇄하여 특정 메소드를 상속받습니다.

import pdb 
class A(): 
    def funct(self): 
     print 3 

class B(): 
    def funct(self): 
     print 6 

class C(A, B): 
    pass 

b = B(); 
print b.funct() 

===================================

☺ python a.py 
3 
None 

= ===================

python -m pdb a.py 
(Pdb) p c.funct 
<bound method C.funct of <__main__.C instance at 0x102154440>> 

어떤 기본 클래스에서 파생 클래스 C는 funct 메소드를 상속 받았습니까?

+0

사실 pdb는 이와 관련이 없습니다. 어떤 상황에서도 같은 방식으로 파이썬 객체를 인트로 스펙트 할 수 있습니다. 모든 pdb는 (대부분은) 호출 스택을 위아래로 이동하고 중단 점을 설정하는 쉬운 방법입니다. 그러나 pdb에서 검사 할 수있는 모든 것 역시 검사없이 검사 할 수 있습니다. 그것은 대부분의 내성 패턴을 다른 것으로 만들지 않습니다. – Iguananaut

답변

1

자신을 직접 조사해야합니다.

유용 기능에서 잘라낸 벨로우즈를 넣을 수는 있지만, 클래스에서 클래스를 가져 와서 __mro__ 속성을 반복하고 각 클래스에서 원하는 기능이나 속성이 있는지 확인하십시오. __dict__ :

print(list(cls for cls in b.__class__.__mro__ if "funct" in cls.__dict__)) 

(당신은 "PDB는"그와 아무 상관이있다 알 - 파이썬은 일반적으로 대화 형 모드에서 작업 할 수있는 오른쪽 PDB가 interacitive 모드에 들어가기의 한 방법입니다, 하나이기는하지만? ipython과 같은 파이썬 쉘과 비교할 때 리소스가 부족합니다.)

두 번째 참고 사항 : 당신이하고있는 일을 알지는 못하지만 파이썬 2.x가 아닌 파이썬 3.x에서 그렇게하려고 노력해야합니다.