【发布时间】:2016-11-01 13:16:06
【问题描述】:
如何确定给定类是否是任何typing.Generic 的子类?调用issubclass 似乎没有像我预期的那样工作:
import typing
T = typing.TypeVar('T')
class A(typing.Generic[T]):
pass
class B:
pass
issubclass(A, typing.Generic)
>>> True
issubclass(B, typing.Generic)
>>> Traceback (most recent call last):
... <more traceback lines here>
File "<some_path>\env\lib\abc.py", line 225, in __subclasscheck__
for scls in cls.__subclasses__():
TypeError: descriptor '__subclasses__' of 'type' object needs an argument
另外,我是否遗漏了什么,这是预期的行为还是错误?
那么,假设如果TypeError 被引发,那么它不是typing.Generic 的子类是否安全?
我正在使用 Python 3.5.2。
谢谢。
【问题讨论】:
-
应该是
issubclass(B, typing.Generic[T]) -
它有效,是的,但仅在这种情况下,因为泛型可以提供多个类型参数。
标签: python python-3.x type-hinting