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
表示x
是Element
类的一个实例。
当你想传递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。