Beispielcode
">"> ">"> ">"> ">"> ">
Code: Select all
from typing import Optional, get_type_hints
from enum import IntEnum, Enum
class TestEnum(IntEnum):
foo = 1
bar = 2
class Foo():
opt_enum : TestEnum | None = None
types = get_type_hints(Foo)['opt_enum']
(ipython)
Code: Select all
In [4]: Optional[TestEnum] == types
Out[4]: True
(Ja, das sind verzweifelte Versuche)
Code: Select all
In [6]: Optional[IntEnum] == types
Out[6]: False
< /code>
und < /p>
In [11]: issubclass(Enum, types)
Out[11]: False
< /code>
und < /p>
In [12]: issubclass(types, Enum)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
Cell In [12], line 1
----> 1 issubclass(types, Enum)
TypeError: issubclass() arg 1 must be a class
< /code>
und < /p>
In [13]: issubclass(types, Optional[Enum])
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
Cell In [13], line 1
----> 1 issubclass(types, Optional[Enum])
File /usr/lib/python3.10/typing.py:1264, in _UnionGenericAlias.__subclasscheck__(self, cls)
1262 def __subclasscheck__(self, cls):
1263 for arg in self.__args__:
-> 1264 if issubclass(cls, arg):
1265 return True
TypeError: issubclass() arg 1 must be a class
< /code>
und < /p>
In [7]: IntEnum in types
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
Cell In [7], line 1
----> 1 IntEnum in types
TypeError: argument of type 'types.UnionType' is not iterable
< /code>
Warum ich dies brauchte < /h3>
Ich habe mehrere Fälle, in denen ich Daten aus CSV -Dateien importiere und Objekte einer Klasse aus jeder Zeile erstelle. csv.dictreader () Die Typen zumindest für Basistypen und Enums ordnungsgemäß ändert>
Mobile version