为了账号安全,请及时绑定邮箱和手机立即绑定

在函数注释中指定类类型

在函数注释中指定类类型

宝慕林4294392 2021-08-14 15:42:53
所以我有一个将类作为参数的函数(不是类实例!)。如何在函数注释中指定它我的意思是:def add(a: int, b: int):但我不能这样做:def my_func(cls: class):因为 class 是类定义的保留字。我该如何解决这个问题?
查看完整描述

1 回答

?
FFIVE

TA贡献1797条经验 获得超6个赞

您可以使用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。因此,如果您添加了注释typeType.


查看完整回答
反对 回复 2021-08-14
  • 1 回答
  • 0 关注
  • 164 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号