如何让Intellisense与使用classproperty装饰器的自定义python枚举一起工作

如何让Intellisense与使用classproperty装饰器的自定义python枚举一起工作,python,python-3.x,visual-studio-code,decorator,docstring,Python,Python 3.x,Visual Studio Code,Decorator,Docstring,我正试图以一种可以很好地使用docstring的方式在python中实现枚举 基本上,这就是我正在做/试图做的事情(完整的可运行代码将位于底部,因为它的长度): 类动物(枚举库): _狗=‘狗’ _猫 @类别属性 def狗(cls): """ 一种非常爱人类的四足动物。 """ 返回cls。\u狗 @类别属性 def类别(cls): """ 统治人类。 """ 返回cls.\u cat print(anists.dog)#输出“dog”,以编程方式完美工作 我的代码在技术上运行良好,但是VS代

我正试图以一种可以很好地使用docstring的方式在python中实现枚举

基本上,这就是我正在做/试图做的事情(完整的可运行代码将位于底部,因为它的长度):

类动物(枚举库):
_狗=‘狗’
_猫
@类别属性
def狗(cls):
"""
一种非常爱人类的四足动物。
"""
返回cls。\u狗
@类别属性
def类别(cls):
"""
统治人类。
"""
返回cls.\u cat
print(anists.dog)#输出“dog”,以编程方式完美工作
我的代码在技术上运行良好,但是VS代码Intellisense无法读取枚举的docstring。例如,当我将鼠标悬停在
print(animates.dog)
中的
dog
上时,它不会输出其docstring。我假设这是因为
classproperty
decorator,但我不知道有什么更好的方法可以做到这一点(除非我切换到classmethods,但我想避免不必要的并列关系)

有谁有更好的方法可以实现这一点,或者我可以不欺骗Intellisense来读取我的文档字符串

下面是完整的可运行代码。注意,还有许多其他功能与手头的问题无关(基本上是允许我将子类视为可重用的代码)

类类属性(属性):
"""
类方法属性装饰器。(通过@classproperty使用)
@classmethod允许我们从类调用东西,比如:
Foo.bar()
@property允许我们调用以下函数:
Foo().bar
但我们需要具有文档字符串的枚举功能,如:
美食酒吧
因此,这个装饰器的用例。
"""
定义获取(自我、cls、所有者):
"""
重新定义get。
"""
返回classmethod(self.fget)。\uuuu获取(无,所有者)()
类_元枚举(类型):
"""
需要重载的_contains__方法的元类
枚举基。
"""
定义包含(cls,val):
"""
类级别的'in'运算符的运算符重载。
如果'x'是枚举值之一,则将返回true
存储在基类的子类中。
"""
返回cls中的val.\u获取\u内容()
定义(cls):
"""
字符串运算符重载。
"""
返回“,”。join(cls中x的str(x).\u get\u contents())
定义(cls):
"""
返回类中所有元素的生成器。
"""
返回(cls中的x表示x.\u获取\u内容())
类EnumBase(元类=_MetaEnum):
"""
可由枚举类继承的枚举基类。
允许执行'in'操作以及自动设置str格式。
例子:
类别Foo(枚举基):
a=2
b=3
c=4
打印(2个Foo)#正确
打印(Foo)#2、3、4
"""
@类方法
定义获取内容(cls):
"""
返回所有不同枚举值的集合。
"""
#获取所有不是方法的类属性
attributes=inspect.getmembers(cls,lambda:notinspect.isrutiane(a))
#将所有非私有属性(如_dict__)转换为一个集合
#然后把它还给我。
如果属性中的a不是(a[0]),则返回{a[1]。startswith('''''''u'')和a[0]。endswith(''u''))}
类动物(样本库):
_狗=‘狗’
_猫
@类别属性
def狗(cls):
"""
一种非常爱人类的四足动物。
"""
返回cls。\u狗
@类别属性
def类别(cls):
"""
统治人类。
"""
返回cls.\u cat

基本上,你不能欺骗IntelliSense引擎,使其将你的装饰器识别为将方法转换为描述符。

这是我的猜测,但我希望我错了。我尝试了很多其他的东西,包括试图改变元类的工作方式,但即使我得到了
\uuuu doc\uuuuu
\uuu name\uuuu
来正确填充IntelliSense,也失败了。。。除了IntelliSense,一切都按预期进行。至少谢谢你的确认。我会让它不回答,以防有人发现一个环洞。