2011-01-16 6 views
3

받기, 하나는 다른에 포함 된기능의 '네임 스페이스 경로'나는 어떤 네임 스페이스를

class A: 
    class B: 
     class C: 
      def method(): pass 

get_ns_path(A.B.C.method) # >>> 'A.B.C.method' 

이 가능 문자열로 '네임 스페이스 경로를'방법/기능을 받아 반환 등 get_ns_path(func)을 구현하는 것입니다 ?

A.B.C.method.im_classC을 제공합니다. 그러나 어떻게 더 올라가고 싶습니까?

답변

2

그게 가능하다고 생각하지 않습니다 당신이 Z.C = A.B.C을 할 수 있으며이 같은 객체가 될 것이기 때문에

>>> dir(A.B.C) 
['__doc__', '__module__', 'method'] 

더 설득력, 약 A.B을 알아야 할 이유 A.B.C 없습니다. 그러면 get_ns_path(Z.C.method)은 무엇을 반환할까요?

-1

inspect 모듈을 사용하면 mro을 얻을 수 있습니다.

inspect.getmro(cls)¶ 
+0

MRO하지 네임 스페이스 : – kolypto

+0

@o_O Tync'.'join (반전 (inspect.getmro (method.im_class)))'에 포함, 상속 작동? – Apalala

+0

MRO는 뭔가 다릅니다 :'inspect.getmro (A.B.C.f.im_class) >>> ()' – kolypto