在函数注释中指定类类型

设计

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

如何在功能注释中指定

我的意思是:

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

但是我不能这样做:

def my_func(cls: class):

由于类是类定义的保留字。我该如何解决?

提格布

您可以使用cls: type

就像每个整数都是的实例一样int,每个类都是的实例type

演示:

>>> class Foo: pass
>>> 
>>> isinstance(Foo, type)
>>> True
>>> isinstance(Foo(), type)
>>> False

您还可以Typetyping模块中使用,根据文档,模块是

可用于注释类对象的特殊构造。

使用typing.Type比灵活cls:type

例如,如果要暗示参数可以是任何类对象,则只需使用cls:Type

如果参数应该是作为该类Foo(或其Foo本身)的子类的任何类对象,则可以编写cls: Type[Foo]

阅读文档以获取更多信息

回应评论:

就像你的例子。类对象是类型的实例,但不是。因此,这就是它抱怨的原因:func(Person)行之有效,但事实func(Person('Steve', 22))并非如此。

在第二种情况下,你在做什么,你明确表示你不想做的事情:传递一个实例Person,而不是类Person因此,如果您注释type或,则IDE应该正确地进行投诉Type

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章