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