我有一個描述符,輪流的方法插入類級別的屬性:實現它保留了文檔字符串類屬性
class classproperty(object):
def __init__(self, getter):
self.getter = getter
self.__doc__ = getter.__doc__
def __get__(self, instance, owner):
return self.getter(owner)
像這樣來使用:
class A(object):
@classproperty
def test(cls):
"docstring"
return "Test"
不過,我現在可以't訪問__doc__
屬性(這是邏輯的,因爲訪問A.test.__doc__
將獲取str
的__doc__
,因爲A.test
已經返回。
我的最終目標是我的文檔字符串將出現在獅身人面像中,因此以任何其他方式檢索文檔字符串比通過訪問屬性__doc__
屬性是不可行的。我發現自己想知道這是否有可能。
我知道property
通過在沒有實例的情況下調用返回類來解決此問題。但是,這顯然與我的目標相沖突。
我開始擔心這在Python中是不可能的。
注:我願意拉任何特技在classproperty
,只要它是穩定的(即不設置對返回值__doc__
)。但是,對classproperty
的用戶施加任何負擔是不可行的(即,他們應該僅使用裝飾器並且完成它)。
Ooo ...在元類上的屬性(*使智力筆記*) – mgilson
嗯,它似乎在這和下面的答案之間,有兩個解決方案:一個把額外的工作放在用戶上(即不容易'@ classproperty'),另一個不提供直接'__doc__')。我想我會用元類方式去。謝謝。 – javex