2014-06-07 62 views
1

說我有一類「NumberStore」如何返回python中類的定義?

class NumberStore(object): 
    def __init__(self, num): 
     self.num = num 

    def get(self): 
     return self.num 

,後來,進行序列化的目的,我想打印類的定義,無論是完全按照規定,或等效表示。在下面的理想化例子中,python有沒有什麼方法可以訪問類的定義?

>>> NumberStore.print_class_definition() 
"class NumberStore(object):\n def __init__(self, num):\n  self.num = num\n \n def get(self):\n  return self.num" 
+0

需要注意的是沿着這些線路很少會使用自由變量定義的類失敗。最簡單的例子是像'def meth(x = CONSTANT):...'這樣的默認參數,但它也包含裝飾器(儘管很多常見的裝飾器都內置於其中,因此幾乎普遍可用)。 – delnan

回答

2

是的,有inspect.getsource

from inspect import getsource 

class NumberStore(object): 
    def __init__(self, num): 
     self.num = num 

    def get(self): 
     return self.num 

    @classmethod 
    def print_class_definition(cls): 
     return getsource(cls) 
+1

完美答案。謝謝(你的)信息。作爲對未使用過這些的人的一個便箋;它在交互式解釋器中不起作用,您必須執行一個python腳本或模塊才能使用它。 – user1276560

相關問題