lifehacks.metaclasses
1.0.0
? lifehacks.metaclasses
├── meta
├── enum
└── EnumException
pip install lifehacks.metaclassesmeta口enum元素EnumExceptionmeta口有幾種方法可以進行meta課程。
from lifehacks . metaclasses import meta
class myenum0 ( metaclass = meta ): ...
@ meta # preferred method
class myenum1 : ...
@ meta () # do not use this method
class myenum2 : ...enum元素與上面的meta元素相同,有幾種方法可以召集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 : ...用法示例:
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課程不是即時的,更多的是以下內容。
EnumException enum課程是不可接受的。如果您嘗試過,您會得到EnumException
@ enum
class Palette : ...
p = Palette () # illegal, raises EnumException