我正在尝试根据我的类型提示进行有条理的工作,以使代码更易于添加。
我参加了以下课程:
class Player(ABC)
@abstractmethod
def some_function():
pass
class SomeSubclass(Player):
def some_function():
#some meaningfull code
pass
p1: Type[Player] = SomeSubclass()
在最后一行中,PyCharm出现了预期的类型错误:
预期类型'Type [Player]'改为'SomeSubclass'
我使用错误的Typehint还是缺少其他内容?
[仅在键入类型时才需要使用Type[X]
类型声明(这是不常见的情况-例如,如果您有一个采用类型而不是对象实例的工厂函数,作为其参数)。要输入对象,只需使用对象的类型:
p1: Player = SomeSubclass()
注意,即使没有类型提示,mypy也会自动推断p1
的类型为SomeSubclass
,因此是Player
。如果要将Player
显式降级为更通用的类型,则只需要添加p1
类型提示,以便以后可以为其分配其他子类。