我怎么能提到在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]'。有什么合适的方法来获得类型的返回作为所有的孩子的父母?

x: Element表示xElement类的一个实例。

当你想传递Element的子类时使用type[Element]

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

我使用Type[Element]。看起来很好。但是我的朋友告诉我,它的意思是类的一个实例,而不是类本身。似乎正确的答案是some_func(element: t.Type[_T]) -> _T,其中_T = t.TypeVar('_T', bound='Element')import typing as t执行。但它不是很好读,所以我更喜欢使用Type[Element]。谢谢大家!尤其要感谢SUTerliakov。

最新更新