一种暗示
SomeClass
意味着值应该是
某个阶级
,不是类变量
某个阶级
“。”什么之中的一个
某个阶级
's class variables“不是一个类型,并且没有可用于该含义的注释。
这种情况的stdlib解决方案是
enum.Enum
,但你拒绝了。在这种情况下,接下来最好的事情是
typing.Literal
类型,在Python3.8中引入。有了它,你可以写
SomeClassValue = typing.Literal['regular', 'important', 'accounts', 'special']
def do_something(*, queue_name: SomeClassValue):
...
你
不能
以某种方式从
某个阶级
;它可能会运行,但不会键入check。这意味着如果你走这条路,你将不得不有很多容易出错的代码重复。(另外,您可能需要
Literal
类变量上的注释-我不知道将为这些变量推断什么类型。)