在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静态类型检查系统一起工作
实际上有一个类型提示,用于说明您想要什么,它只是被称为
Type
,而不是Class
,下面是它的文档:https://docs.python.org/3/library/typing.html#typing.Type正如您所看到的,您可以告诉它应该是什么类,因此在您给出的示例中,它将是:
相关问题 更多 >
编程相关推荐