是否可以对特定类型的严格子类进行类型提示?
假设我想要提示一个数据类中的某个字段应该是某个类的子类,但不想直接使用这个类型。举个更具体的例子:
class Foo:
...
class Bar(Foo):
...
class Baz(Foo):
...
@dataclass
class Data:
foo_subclass_instance: StrictSubclassOf[Foo] # accepts an instance of Bar or Baz, but not a Foo
foo_subclass: type[StrictSubclassOf[Foo]] # accepts Bar or Baz, but not Foo
如果子类的数量很少并且是提前知道的,你可以用类似下面的方法来解决这个问题:
@dataclass
class Data:
foo_subclass_instance: Bar | Baz
foo_subclass: type[Bar] | type[Baz]
不过,如果你需要跟踪的子类很多,可能有些子类在其他文件中,而你又不能导入那些文件,因为那样会导致循环导入的问题,这种方法就不太管用了。
那么有没有什么注解可以用来描述 StrictSubclassOf[T]
呢?
0 个回答
暂无回答