感覺哈克,但一個方法是在文檔字符串獲得將通過co_consts
:
localhost-2:coding $ cat mod1.py
def my_generator():
"""this is my generator"""
for x in (1,2,3):
yield x
it = my_generator()
localhost-2:coding $ python
Python 2.7.2 (v2.7.2:8527427914a2, Jun 11 2011, 15:22:34)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import mod1
>>> mod1.it.__doc__
>>> mod1.it.gi_code.co_consts[0]
'this is my generator'
>>> z = mod1.my_generator()
>>> z.__doc__
>>> z.gi_code.co_consts[0]
'this is my generator'
我會更傾向於找出一些裝飾,以適用於發電機的功能,以確保文檔字符串保持不變。
如果你需要的功能本身,怎麼樣:
>>> import mod1
>>> z = mod1.my_generator()
>>> z.__doc__
>>> z.gi_frame.f_globals[z.__name__]
<function my_generator at 0x1004b7cf8>
>>> z.gi_frame.f_globals[z.__name__] is mod1.my_generator
True
>>> z.gi_frame.f_globals[z.__name__].__doc__
'this is my generator'
,但我不作任何承諾,這適用於任何情況下..
來源
2012-03-24 16:24:00
DSM
你知道了'dir'功能,對不對? – Marcin 2012-03-24 16:10:22