在函数注释中指定类类型

所以我有一个将类作为参数的函数(不是类实例!)。

如何在函数注释中指定它

我的意思是:

def add(a: int, b: int):

但我不能这样做:

def my_func(cls: class):

因为 class 是类定义的保留字。我该如何解决这个问题?


宝慕林4294392
浏览 165回答 1
1回答

FFIVE

您可以使用cls: type.就像每个整数都是 的实例一样int,每个类都是 的实例type。演示:>>> class Foo: pass>>> >>> isinstance(Foo, type)>>> True>>> isinstance(Foo(), type)>>> False您还可以Type从typing模块中使用,根据文档,它是可用于注释类对象的特殊构造。使用typing.Type比cls:type.例如,如果您想暗示参数可以是任何类对象,您只需使用cls:Type.如果参数应该是作为类Foo(或Foo本身)的子类的任何类对象,您可以编写cls: Type[Foo].回应评论:就像在你的例子中一样。类对象是类型的实例,但类实例不是。所以这就是它抱怨的原因:去func(Person)是好的,但func(Person('Steve', 22))不是。在第二种情况下,你在做什么,你明确表示你不想做的事情:传递一个实例的Person,而不是类Person。因此,如果您添加了注释type或Type.
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python