lifehacks.metaclasses
1.0.0
? lifehacks.metaclasses
├── meta
├── enum
└── EnumException
pip install lifehacks.metaclassesmeta -Metaclassenum MetaclassEnumExceptionmeta -Metaclass Es gibt einige Möglichkeiten, eine meta zu erstellen.
from lifehacks . metaclasses import meta
class myenum0 ( metaclass = meta ): ...
@ meta # preferred method
class myenum1 : ...
@ meta () # do not use this method
class myenum2 : ...enum Metaclass Gleiches gilt für meta -Metaclass von oben, es gibt einige Möglichkeiten, eine enum -Klasse zu erstellen.
from lifehacks . metaclasses import enum
# with typing
class MyPalette0 ( metaclass = enum [ Colour ]): ...
@ enum # preferred method
class MyPalette1 : ...
@ enum [ Colour ] # syntax only allowed python>=3.9
class MyPalette2 : ...
@ enum () # do not use this method
class MyPalette3 : ...Verwendungsbeispiel:
from lifehacks . metaclasses import enum
@ enum [ Colour ]
class BasePalette :
BLACK = ...
WHITE = ...
# extending base palette enum
class SubPalette ( BasePalette ):
RED = ...
GREEN = ...
# can be used in type hinting
def print_colours ( palette : enum [ Colour ]) -> None :
for name , value in palette :
print ( name , value )
print_colours ( BasePalette ) # BLACK, WHITE
print_colours ( SubPalette ) # BLACK, WHITE, RED, GREEN
print ( BasePalette . BLACK in SubPalette ) # True enum -Klassen sind nicht sofortig, mehr dazu unten.
EnumException enum -Klassen sind nicht sofort. Wenn Sie es versuchen, erhalten Sie eine EnumException
@ enum
class Palette : ...
p = Palette () # illegal, raises EnumException