在 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 静态类型检查系统一起使用。