2013-08-28 1 views
0

는 나는 그러나, 나는 가끔 foo.__getattr__를 사용하여 동적으로 foo.bar 방법을 구축 할 수 foo.bar?즉석에서 IPython 문서화 문자열을 생성 할 수있는 방법이 있습니까?

를 입력하면 IPython가 문서화 문자열을 가져옵니다 것을 좋아한다. foo.__getdoc__과 같은 마법 방법으로 동적으로 문서화 문자열을 생성 할 수도 있습니다.

IPython은이 작업을 수행하는 데 필요한 모든 메커니즘을 제공하여 즉석에서 빌드 된 문서 문자열을 발견하고 표시 할 수 있습니까?

답변

1

IPython과 아무런 관련이 없습니다. IPython은 객체의 __doc__ 속성을 읽습니다. __getattr__ 메서드에서 동적으로 객체를 생성하는 경우 __doc__ 속성도 설정해야하며 모든 것이 IPython에서 올바르게 작동합니다. 여기

은 예입니다

class A(object): 
    def __init__(self, name): 
     self.name = name 

    def __repr__(self): 
     return 'A[%s]' % self.name 

class Test(object): 
    def __getattr__(self, name): 
     a = A(name) 
     a.__doc__ = 'My a documentation' 
     return a 

In [11]: t = Test() 
In [12]: t.foo 
A[foo] 
In [13]: t.foo? 
Type:  A 
String Form:A[foo] 
Docstring: My a documentation 
+0

아, IPython 노트북에서 t.foo (''에 대한'__getattr__'를 호출 할 것이라고 생각하지 못했지만, 분명히 그것은 감사한다!의 – ChrisB

3

foo.__doc__ = "my doc string"을 설정할 수 있습니다.

관련 문제