[英]How to access the function underlying a @declared_attr?
所以我需要反省@declared_attr
修飾的Base.__tablename__()
方法的底層函數。 我想知道如何做到這一點。 我查看了declared_attr
類,它似乎是從property
繼承的,但似乎不可能做與普通屬性相同的事情:
class Example:
@property
def example(self):
pass
Example.example.fget # <function __main__.Example.example(self)>
因為當您從類中訪問@declared_attr
裝飾屬性時,您會立即獲得函數結果,而不是屬性對象:
class ExampleBase:
@declared_attr
def __tablename__(cls):
return cls.__name__.lower()
ExampleBase.__tablename__ # "examplebase"
那么我該怎么做呢?
您可以通過類' __dict__
訪問描述符對象來規避調用描述符:
In [17]: ExampleBase.__dict__['__tablename__'].fget
Out[17]: <function __main__.ExampleBase.__tablename__>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.