我怎么能提到 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
表示 x
是 Element
class.
的一个实例
当您要传递 Element
的子 class 时使用 type[Element]
。
def some_func(element: type[Element]) -> Element:
return element()
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
表示 x
是 Element
class.
当您要传递 Element
的子 class 时使用 type[Element]
。
def some_func(element: type[Element]) -> Element:
return element()