我怎么能提到 return parent class 中的任何 child 应该在 Python 中?

How can I mention there should return any child of parent class in Python?

class Element:
    def __call__(self, *args, **kwargs):
        print('Hello')
        return self


class Button(Element):
    pass


class TextBox(Element):
    pass


def some_func(element: Element) -> Element:
    return element()


some_func(Button)
some_func(TextBox)

Pycharm 提到“预期类型 'Element',得到的是 'Type[Button]'”。 有什么正确的方法可以将 return 的类型设为 parent 的 children?

我使用类型[元素]。它似乎工作正常。但是我的朋友告诉我,这意味着 class 的实例而不是 class 本身。 似乎正确答案是 some_func(element: t.Type[_T]) -> _T,其中执行了 _T = t.TypeVar('_T', bound='Element')import typing as t。 但它的可读性不是很好,所以我更喜欢使用 Type[Element]。 谢谢你们!尤其要感谢 SUTerliakov。

x: Element 表示 xElement class.

的一个实例

当您要传递 Element 的子 class 时使用 type[Element]

def some_func(element: type[Element]) -> Element:
    return element()