Wie finde ich heraus, ob eine gegebene Klasse eine Unterklasse von typing.Generic
ist? issubclass
Aufruf scheint nicht, wie ich erwartet:Ist issubclass für den Vergleich mit typing.Generic in Python 3.5 gebrochen?
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
Auch bin ich etwas fehlt, und dies ist ein erwartetes Verhalten oder ist das ein Fehler?
Also, ist es sicher anzunehmen, dass, wenn TypeError
ausgelöst wird, dann ist es keine Unterklasse von typing.Generic
?
Ich benutze Python 3.5.2.
Vielen Dank.
Vielleicht sollte es sein 'issubclass (B, typing.Generic [T]) ' –
Es funktioniert, ja, aber nur in diesem Fall, wie ein generischer kann mehr als einen Typparameter zur Verfügung gestellt haben. –