lifehacks.metaclasses
1.0.0
? lifehacks.metaclasses
├── meta
├── enum
└── EnumException
pip install lifehacks.metaclassesmeta metaclaseenum metaclaseEnumExceptionmeta metaclase Hay algunas maneras de hacer una meta clase.
from lifehacks . metaclasses import meta
class myenum0 ( metaclass = meta ): ...
@ meta # preferred method
class myenum1 : ...
@ meta () # do not use this method
class myenum2 : ...enum metaclase Lo mismo con meta Metaclase desde arriba, hay algunas maneras de hacer una clase enum .
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 : ...Ejemplo de uso:
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 Las clases enum no son instancables, más sobre eso a continuación.
EnumException Las clases enum no son instancables. Si intentas, obtienes una EnumException
@ enum
class Palette : ...
p = Palette () # illegal, raises EnumException