是否可以对特定类型的严格子类进行类型提示?

0 投票
0 回答
36 浏览
提问于 2025-04-12 05:11

假设我想要提示一个数据类中的某个字段应该是某个类的子类,但不想直接使用这个类型。举个更具体的例子:

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 个回答

暂无回答

撰写回答