2013-04-16 108 views
3

如何訪問屬性的文檔字符串,而不是其所屬的值?屬性說明

爲什麼在下面的代碼中的2個幫助函數返回abc.x的不同文檔?

class C(object): 
    def __init__(self): 
     self._x = None 

    def getx(self): 
     print "** In get **" 
     return self._x 

    x = property(getx, doc="I'm the 'x' property.") 

abc = C() 
help(abc) # prints the docstring specified for property 'x' 
help(abc.x) # prints the docstring for "None", the value of the property 

回答

3

當你評估abc.x,你調用訪問方法。要取得物業本身,您可以將其稱爲C.x。然後您可以使用help(C.x)獲取文檔字符串。如果你只有一個類實例,你可以通過它的類獲得屬性:

>>> help(abc.__class__.x) 
Help on property: 

    I'm the 'x' property. 
7

這happends因爲abc.x被解析爲None。然後None正在傳遞給help()。試試這個:

help(C.x) 
+0

謝謝,upvoted!我接受了alexis的回答,因爲它也包含了如果你只有一個類實例的情況下該怎麼做 – Dhara