类类型作为参数的类型提示

2024-06-26 05:40:50 发布

您现在位置:Python中文网/ 问答频道 /正文

在ros2的python客户端库中,有一个函数接受类类型作为参数(不是该类的实例,而是定义)

比如说

from std_msgs.msg import String
#String is python class i.e,
#class String:
#    ...

class MyNode(Node)
    def __init__(self):
        super().__init__('my_node')
        self.add_subscription(String, 'chatter', lambda msg : print(msg))
        #Note that we pass in the type String, not an object, i.e String()

如何使用python类型的注释对这样的内容进行注释

一种方法是使用Executable类型提示,因为可以使用()调用类类型来构造对象。但这并不能很好地表达它的真正含义

def foo(class_type: Executable):
   obj: Any = class_type()

如果有这样的东西会更好:

def foo(class_type: Class):
   object: Any = class_type()

有这样的吗?这样做的标准方法是什么

理想情况下,我希望这与MyPy静态类型检查系统一起工作


Tags: 方法self客户端类型stringobjectfooinit
1条回答
网友
1楼 · 发布于 2024-06-26 05:40:50

实际上有一个类型提示,用于说明您想要什么,它只是被称为Type,而不是Class,下面是它的文档:https://docs.python.org/3/library/typing.html#typing.Type

正如您所看到的,您可以告诉它应该是什么类,因此在您给出的示例中,它将是:

Type[String]

相关问题 更多 >