рдЯреАрдПрд▓, рдбреЙ
github.com/QratorLabs/fastenumpip install fast-enum
рдЧрдгрдирд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ
(рдпрджрд┐ рдЖрдк рд╕рдм рдХреБрдЫ рдЬрд╛рдирддреЗ рд╣реИрдВ - "рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдЧрдгрдирд╛" рдЕрдиреБрднрд╛рдЧ рдкрд░ рдЬрд╛рдПрдВ)
рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП рдХрд┐ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЙрдбрд▓ рдореЗрдВ рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рд░рд╛рдЬреНрдпреЛрдВ рдХреЗ рд╕реЗрдЯ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдЖрдк рд╕реАрдзреЗ рдореЙрдбреНрдпреВрд▓ рдиреЗрдорд╕реНрдкреЗрд╕ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╕реНрдерд┐рд░рд╛рдВрдХ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рд▓реЗрдВрдЧреЗ:
... рдпрд╛ рд╕реНрдерд┐рд░ рд╡рд░реНрдЧ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ:
class MyModelStates: INITIAL = 0 PROCESSING = 1 PROCESSED = 2 DECLINED = 3 RETURNED = 4
рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЗрди рд░рд╛рдЬреНрдпреЛрдВ рдХреЛ mnemonic рдирд╛рдореЛрдВ рд╕реЗ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛, рдЬрдмрдХрд┐ рдЖрдкрдХреЗ рднрдВрдбрд╛рд░ рдореЗрдВ рд╡реЗ рд╕рд╛рдзрд╛рд░рдг рдкреВрд░реНрдгрд╛рдВрдХ рд╣реЛрдВрдЧреЗред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЖрдк рдПрдХ рд╕рд╛рде рдХреЛрдб рдХреЗ рд╡рд┐рднрд┐рдиреНрди рднрд╛рдЧреЛрдВ рдореЗрдВ рдмрд┐рдЦрд░реЗ рд╣реБрдП рдЬрд╛рджреВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛ рд▓реЗрддреЗ рд╣реИрдВ, рд╕рд╛рде рд╣реА рдЗрд╕реЗ рдЕрдзрд┐рдХ рдкрдардиреАрдп рдФрд░ рд╕реВрдЪрдирд╛рддреНрдордХ рдмрдирд╛рддреЗ рд╣реИрдВред
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореЙрдбреНрдпреВрд▓ рд╕реНрдерд┐рд░ рдФрд░ рд╕реНрдерд┐рд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рд╡рд╛рд▓реЗ рд╡рд░реНрдЧ рджреЛрдиреЛрдВ рдкрд╛рдпрдерди рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреА рдЖрдВрддрд░рд┐рдХ рдкреНрд░рдХреГрддрд┐ рд╕реЗ рдкреАрдбрд╝рд┐рдд рд╣реИрдВ: рд╡реЗ рд╕рднреА рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрдиреАрдп (рдЙрддреНрдкрд░рд┐рд╡рд░реНрддреА) рд╣реИрдВред рдЖрдк рдЧрд▓рддреА рд╕реЗ рд░рди рдЯрд╛рдЗрдо рдкрд░ рдЕрдкрдиреЗ рдХрдВрдЯреАрдиреНрдпреВ рдХреЛ рд╡реИрд▓реНрдпреВ рдЕрд╕рд╛рдЗрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЯреВрдЯреА рд╣реБрдИ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдбрд┐рдмрдЧрд┐рдВрдЧ рдФрд░ рд░реЛрд▓рд┐рдВрдЧ рдХрд░рдирд╛ рдПрдХ рдЕрд▓рдЧ рд╕рд╛рд╣рд╕рд┐рдХ рдХрд╛рд░реНрдп рд╣реИред рддреЛ рдЖрдк рдЗрд╕ рдЕрд░реНрде рдореЗрдВ рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╕реНрдерд┐рд░рд╛рдВрдХ рдХрд╛ рдмрдВрдбрд▓ рдмрдирд╛рдирд╛ рдЪрд╛рд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдШреЛрд╖рд┐рдд рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреА рд╕рдВрдЦреНрдпрд╛ рдФрд░ рдЙрдирдХреЗ рдорд╛рди рдЬрд┐рд╕ рдкрд░ рд╡реЗ рдореИрдк рдХрд┐рдП рдЧрдП рд╣реИрдВ, рдХрд╛рд░реНрдпрдХреНрд░рдо рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди рдирд╣реАрдВ рдмрджрд▓реЗрдЧрд╛ред
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдирд╛рдорд┐рдд
namedtuple()
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрдиреНрд╣реЗрдВ
namedtuple()
рдореЗрдВ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
MyModelStates = namedtuple('MyModelStates', ('INITIAL', 'PROCESSING', 'PROCESSED', 'DECLINED', 'RETURNED')) EntityStates = MyModelStates(0, 1, 2, 3, 4)
рд▓реЗрдХрд┐рди рдпрд╣ рдмрд╣реБрдд рд╕рд╛рдл-рд╕реБрдерд░рд╛ рдФрд░ рдкрдардиреАрдп рдирд╣реАрдВ рджрд┐рдЦрддрд╛ рд╣реИ, рдФрд░
namedtuple
рд╡рд╕реНрддреБрдПрдВ, рдмрджрд▓реЗ рдореЗрдВ, рдмрд╣реБрдд рд╣реА рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд▓ рдирд╣реАрдВ рд╣реИрдВред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ UI рд╣реИ рдЬреЛ рдЗрди рд╕рднреА рд░рд╛рдЬреНрдпреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЖрдк рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдЕрдкрдиреЗ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд░реНрдЧ, рдпрд╛ рдЙрдиреНрд╣реЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреНрдпреВрдкрд▓реНрд╕ рдирд╛рдорд┐рдд (рдЕрдВрддрд┐рдо рджреЛ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ)ред рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдХреЛрдб рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдкреНрд░рддреНрдпреЗрдХ рд░рд╛рдЬреНрдп рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рдмрдирд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рдпреВрдЖрдИ рдореЗрдВ рдмрд╣реБрднрд╛рд╖реАрд╡рд╛рдж рдФрд░ i18n рд╕рдорд░реНрдерди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдПрд╣рд╕рд╛рд╕ рд╣реЛрдЧрд╛ рдХрд┐ рдЗрди рд╡рд┐рд╡рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рднреА рдЕрдиреБрд╡рд╛рджреЛрдВ рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рдкреВрд░рд╛ рдХрд░рдирд╛ рдПрдХ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рдХрдард┐рди рдХрд╛рдо рдмрди рдЬрд╛рддрд╛ рд╣реИред рдЖрд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рд╡рд┐рд╡рд░рдг рд╕реЗ рдореЗрд▓ рдЦрд╛рдиреЗ рдХрд╛ рдорддрд▓рдм рд░рд╛рдЬреНрдп рдХреЗ рдирд╛рдореЛрдВ рдХрд╛ рдорд┐рд▓рд╛рди рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЖрдк рдЕрдкрдиреЗ рд╕рднреА
INITIAL
рд░рд╛рдЬреНрдпреЛрдВ рдХреЛ
gettext
рдореЗрдВ рдПрдХ рд╣реА рд╡рд┐рд╡рд░рдг рдореЗрдВ рдореИрдк рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдЖрдкрдХрд╛ рд╕реНрдерд┐рд░рд╛рдВрдХ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд░реВрдк рд▓реЗрддрд╛ рд╣реИ:
INITIAL = (0, 'My_MODEL_INITIAL_STATE')
рдпрд╛ рдЖрдкрдХреА рдХрдХреНрд╖рд╛ рдЗрд╕ рддрд░рд╣ рд╣реЛ рдЬрд╛рддреА рд╣реИ:
class MyModelStates: INITIAL = (0, 'MY_MODEL_INITIAL_STATE')
рдЕрдВрдд рдореЗрдВ, рдирд╛рдорд┐рдд рдЯрдкрд▓ рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ:
EntityStates = MyModelStates((0, 'MY_MODEL_INITIAL_STATE'), ...)
рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмреБрд░рд╛ рдирд╣реАрдВ рд╣реИ - рдЕрдм рдпрд╣ рдЧрд╛рд░рдВрдЯреА рджреЗрддрд╛ рд╣реИ рдХрд┐ рдпреВрдЖрдИ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рд╕реНрдерд┐рддрд┐ рдореВрд▓реНрдп рдФрд░ рдЕрдиреБрд╡рд╛рдж рд╕реНрдЯрдм рджреЛрдиреЛрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЗрди рдореИрдкрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдХреЛрдб рдЧрдбрд╝рдмрдбрд╝ рд╣реЛ рдЧрдпрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдмрд╛рд░, рдПрдХ рдЗрдХрд╛рдИ рдорд╛рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реБрдП, рдЖрдкрдХреЛ рдЙрд╕ рдкреНрд░рджрд░реНрд╢рди рд╕реЗ рдЗрдВрдбреЗрдХреНрд╕ 0 рдХреЗ рд╕рд╛рде рдорд╛рди рдирд┐рдХрд╛рд▓рдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рдЖрдк рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ:
my_entity.state = INITIAL[0]
рдпрд╛
my_entity.state = MyModelStates.INITIAL[0]
рдпрд╛
my_entity.state = EntityStates.INITIAL[0]
рдФрд░ рдЗрд╕реА рддрд░рд╣ред рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдкрд╣рд▓реЗ рджреЛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЬреЛ рдХреНрд░рдорд╢рдГ рд╕реНрдерд┐рд░рд╛рдВрдХ рдФрд░ рд╡рд░реНрдЧ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрди рд╕реЗ рдкреАрдбрд╝рд┐рдд рд╣реИрдВред
рдФрд░ рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рд╣рдорд╛рд░реА рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд▓рд┐рдП рдЖрддреЗ рд╣реИрдВ
class MyEntityStates(Enum): def __init__(self, val, description): self.val = val self.description = description INITIAL = (0, 'MY_MODEL_INITIAL_STATE') PROCESSING = (1, 'MY_MODEL_BEING_PROCESSED_STATE') PROCESSED = (2, 'MY_MODEL_PROCESSED_STATE') DECLINED = (3, 'MY_MODEL_DECLINED_STATE') RETURNED = (4, 'MY_MODEL_RETURNED_STATE')
рд╡рд╣ рд╕рдм рд╣реИред рдЕрдм рдЖрдк рдЖрд╕рд╛рдиреА рд╕реЗ рдЕрдкрдиреЗ рд░реЗрдВрдбрд░ (рдЬрд┐рдВрдЬрд╛ 2 рд╕рд┐рдВрдЯреИрдХреНрд╕) рдореЗрдВ рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ рдкрд░ рдкреБрдирд░рд╛рд╡реГрддрд┐ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
{% for state in MyEntityState %} <option value=тАЭ{{ state.val }}тАЭ>{{ _(state.description) }}</option> {% endfor %}
рдПрдХ рдЧрдгрдирд╛ рджреЛрдиреЛрдВ рддрддреНрд╡реЛрдВ рдХреЗ рдПрдХ рд╕реЗрдЯ рдХреЗ рд▓рд┐рдП рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╣реИ - рдЖрдк рд░рдирдЯрд╛рдЗрдо рдкрд░ рдПрдХ рдПрдиреНрдпреВрдорд░реЗрд╢рди рдХреЗ рдирдП рд╕рджрд╕реНрдп рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╕рджрд╕реНрдп рдХреЛ рдирд╣реАрдВ рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЙрди рддрддреНрд╡реЛрдВ рдХреЗ рдЙрди рдореВрд▓реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд┐рдиреНрд╣реЗрдВ рдпрд╣ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ - рдЖрдк рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖рддрд╛ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдЕрд╕рд╛рдЗрди рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдЖрдкрдХреЗ рдХреЛрдб рдореЗрдВ, рдЖрдк рдмрд╕ рдЕрдкрдиреА рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЛ рдорд╛рди рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ:
my_entity.state = MyEntityStates.INITIAL.val
рд╕рдм рдХреБрдЫ рдкрд░реНрдпрд╛рдкреНрдд рд╕реНрдкрд╖реНрдЯ, рдЬрд╛рдирдХрд╛рд░реАрдкреВрд░реНрдг рдФрд░ рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд▓ рд╣реИред рдпрд╣ рд╡рд╣ рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╣рдо рдПрдиреНрдпреВрдорд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
рд╣рдо рдЗрд╕реЗ рдФрд░ рддреЗрдЬрд╝ рдХреИрд╕реЗ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ?
рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реЗ рдЧрдгрдирд╛ рдзреАрдореА рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ рдЦреБрдж рд╕реЗ рдкреВрдЫрд╛ - рдХреНрдпрд╛ рд╣рдо рдЗрд╕реЗ рдЧрддрд┐ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ? рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ, рд╣рдо, рдЕрд░реНрдерд╛рддреН, рд╣рдорд╛рд░реА рдЧрдгрдирд╛ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
- рд╕рджрд╕реНрдп рдЧрдгрди рддрдХ рдкрд╣реБрдВрдЪ рдкрд░ рддреАрди рдЧреБрдирд╛ рддреЗрдЬ;
- ~ 8.5 рдХрд┐рд╕реА рд╕рджрд╕реНрдп рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛ (
name
, value
) рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдкрд░ рддреЗрдЬрд╝; - рдореВрд▓реНрдп рд╕реЗ рдХрд┐рд╕реА рд╕рджрд╕реНрдп рддрдХ
MyEnum(value))
рд╕рдордп 3 рдЧреБрдирд╛ рддреЗрдЬреА рд╕реЗ (рдПрдиреНрдпреВрдорд░реЗрд╢рди MyEnum(value))
рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ MyEnum(value))
; - рдирд╛рдо рд╕реЗ рдХрд┐рд╕реА рд╕рджрд╕реНрдп рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдкрд░ 1.5 рдЧреБрдирд╛ рддреЗрдЬрд╝ (рдЬреИрд╕рд╛ рдХрд┐
MyEnum[name]
рд╢рдмреНрджрдХреЛрд╢) рдореЗрдВ рд╣реИред
рдкрд╛рдпрдерди рдореЗрдВ рдкреНрд░рдХрд╛рд░ рдФрд░ рд╡рд╕реНрддреБрдПрдВ рдЧрддрд┐рд╢реАрд▓ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╡рд╕реНрддреБрдУрдВ рдХреА рдЧрддрд┐рд╢реАрд▓ рдкреНрд░рдХреГрддрд┐ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдг рд╣реИрдВред рдЖрдкрдХреЛ
__slots__
рд╕рд╛рде рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдмрдврд╝рд╛рд╡рд╛ рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рд╕рдВрднрд╡ рд╣реЛ рддреЛ рдбреЗрдЯрд╛ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдмрдЪреЗрдВ, рд▓реЗрдХрд┐рди рдЧрддрд┐ рдореЗрдВ рд╡реГрджреНрдзрд┐ рдХреА рднреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ - рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдЖрд╡реЗрджрди рдЬрдЯрд┐рд▓рддрд╛ рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд╡реГрджреНрдзрд┐ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╕реНрд▓реЙрдЯреНрд╕
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк
__slots__
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╡рд░реНрдЧ рдШреЛрд╖рдгрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд╕рднреА рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рдХреЗрд╡рд▓
__slots__
рдореЗрдВ рдШреЛрд╖рд┐рдд рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХрд╛ рдПрдХ рд╕реАрдорд┐рдд рд╕реЗрдЯ
__slots__
рдФрд░ рдорд╛рддрд╛-рдкрд┐рддрд╛ рд╡рд░реНрдЧреЛрдВ рдХреЗ рд╕рднреА
__slots__
ред
рд╡рд░реНрдгрдирдХрд░реНрддрд╛
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдкрд╛рдпрдерди рджреБрднрд╛рд╖рд┐рдпрд╛ рд╕реАрдзреЗ рд╡рд╕реНрддреБ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдорд╛рди рд▓реМрдЯрд╛рддрд╛ рд╣реИ (рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ, рд╣рдо рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдорд╛рди рднреА рдПрдХ рдкрд╛рдпрдерди рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИ, рдФрд░ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, C рднрд╛рд╖рд╛ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд):
value = my_obj.attribute # , .
рдкрд╛рдпрдерди рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдпрджрд┐ рд╡рд┐рд╢реЗрд╖рддрд╛ рдорд╛рди рдПрдХ рдРрд╕реА рд╡рд╕реНрддреБ рд╣реИ, рдЬреЛ рдХрд┐ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЗрд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рдореВрд▓реНрдп рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╕рдордп, рджреБрднрд╛рд╖рд┐рдпрд╛ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЙрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рд▓рд┐рдВрдХ
__get__
, рдЬрд┐рд╕реЗ рд╕рдВрдкрддреНрддрд┐ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддреА рд╣реИ рдФрд░ рдлрд┐рд░ рд╡рд┐рд╢реЗрд╖
__get__
рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рддреА
__get__
, рдЬреЛ рдХрд┐ рд╣рдорд╛рд░реЗ рдореВрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд╕ рд╣реЛрдЧреАред рддрд░реНрдХ:
obj_attribute = my_obj.attribute obj_attribute_value = obj_attribute.__get__(my_obj)
рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдЧрдгрдирд╛
рдорд╛рдирдХ рдЧрдгрди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рджрд╕реНрдпреЛрдВ рдХреЗ рдХрдо рд╕реЗ рдХрдо
name
рдФрд░
value
рдЧреБрдг
types.DynamicClassAttribute
рд░реВрдк рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рдЖрдк
name
рдФрд░
value
рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдирд┐рдореНрди рд╣реЛрдЧрд╛:
one_value = StdEnum.ONE.value
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдХреЙрд▓ рдХреЗ рдкреВрд░реЗ рдЕрдиреБрдХреНрд░рдо рдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЫрджреНрдо рдХреЛрдб рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
def get_func(enum_member, attrname):
рд╣рдордиреЗ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реБрдП рдПрдХ рд╕рд░рд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦреА рд╣реИ:
from enum import Enum class StdEnum(Enum): def __init__(self, value, description): self.v = value self.description = description A = 1, 'One' B = 2, 'Two' def get_name(): return StdEnum.A.name from pycallgraph import PyCallGraph from pycallgraph.output import GraphvizOutput graphviz = GraphvizOutput(output_file='stdenum.png') with PyCallGraph(output=graphviz): v = get_name()
рдФрд░ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдмрд╛рдж, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдиреЗ рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЪрд┐рддреНрд░ рджрд┐рдпрд╛:

рдпрд╣ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рд╣рд░ рдмрд╛рд░ рдЬрдм рдЖрдк рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реЗ рдЧрдгрдирд╛ рд╕рджрд╕реНрдпреЛрдВ рдХреЗ
name
рдФрд░
value
рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рддрдХ рдкрд╣реБрдВрдЪрддреЗ рд╣реИрдВ, рддреЛ рдПрдХ рд╣реИрдВрдбрд▓ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░, рдмрджрд▓реЗ рдореЗрдВ,
Enum
def name(self)
рд╡рд┐рдзрд┐ рдХреЗ рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реЗ
Enum
рд╡рд░реНрдЧ рдХреЗ рдПрдХ рдХреЙрд▓ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рд╕реЗ рд╕рдЬрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред
рд╣рдорд╛рд░реЗ FastEnum рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХрд░реЗрдВ:
from fast_enum import FastEnum class MyNewEnum(metaclass=FastEnum): A = 1 B = 2 def get_name(): return MyNewEnum.A.name from pycallgraph import PyCallGraph from pycallgraph.output import GraphvizOutput graphviz = GraphvizOutput(output_file='fastenum.png') with PyCallGraph(output=graphviz): v = get_name()
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЫрд╡рд┐ рдореЗрдВ рдХреНрдпрд╛ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

рдпрд╣ рд╕рдм рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдорд╛рдирдХ рдЧрдгрди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдЕрдВрджрд░ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдЖрдк рд╣рд░ рдмрд╛рд░ рдЕрдкрдиреЗ рд╕рджрд╕реНрдпреЛрдВ рдХреЗ
name
рдФрд░
value
рдЧреБрдгреЛрдВ рддрдХ рдкрд╣реБрдВрдЪрддреЗ рд╣реИрдВред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рд╣рдорд╛рд░рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рддреЗрдЬ рд╣реИред
рдкрд╛рдпрдерди рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдЧрдгрдирд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╕реЗ рдбреЗрдЯрд╛ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬрдм рд╣рдордиреЗ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдорд╛рдирдХ рдЧрдгрдирд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рддреЛ рд╣рдордиреЗ рддреБрд░рдВрдд рджреЗрдЦрд╛ рдХрд┐ рдХрд┐рддрдиреЗ рдбреЗрдЯрд╛ рд╡рд┐рд╡рд░рдгрдХреЛрдВ рдХреЛ
name
рдФрд░
value
рд▓рд┐рдП рдмреБрд▓рд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдФрд░ рдЪреВрдВрдХрд┐ рдкреВрд░реЗ рдХреЛрдб рдореЗрдВ рдЧрдгрдирд╛ рдХрд╛ рдХрд╛рдлреА рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдкреНрд░рджрд░реНрд╢рди рдХрдо рдерд╛ред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдорд╛рдирдХ Enum рд╡рд░реНрдЧ рдореЗрдВ рдХрдИ рд╕рд╣рд╛рдпрдХ "рд╕рдВрд░рдХреНрд╖рд┐рдд" рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:
_member_names_
- рдЧрдгрди рдХреЗ рд╕рджрд╕реНрдпреЛрдВ рдХреЗ рд╕рднреА рдирд╛рдореЛрдВ рд╡рд╛рд▓реА рдПрдХ рд╕реВрдЪреА;_member_map_
- OrderedDict
, рдЬреЛ рдЕрдкрдиреЗ рдореВрд▓реНрдп рдХреЗ рд▓рд┐рдП рдПрдХ рдЧрдгрдирд╛ рд╕рджрд╕реНрдп рдХреЗ рдирд╛рдо рдХреЛ рдореИрдк рдХрд░рддрд╛ рд╣реИ;_value2member_map_
- рд╡рд┐рдкрд░реАрдд рджрд┐рд╢рд╛ рдореЗрдВ рдорд┐рд▓рд╛рди рд╡рд╛рд▓рд╛ рдПрдХ рд╢рдмреНрджрдХреЛрд╢: рдЧрдгрдирд╛ рдХреЗ рд╕рджрд╕реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЧрдгрди рдХреЗ рд╕рджрд╕реНрдпреЛрдВ рдХреЗ рдореВрд▓реНрдпреЛрдВред
рд╢рдмреНрджрдХреЛрд╢ рдЦреЛрдЬ рдзреАрдореА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдХреЙрд▓ рд╣реИрд╢ рдлрд╝рдВрдХреНрд╢рди рдХреА рдЧрдгрдирд╛ рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИ (рдЬрдм рддрдХ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдкрд░рд┐рдгрд╛рдо рдЕрд▓рдЧ рд╕реЗ рдХреИрд╢ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдЕрдкреНрд░рдмрдВрдзрд┐рдд рдХреЛрдб рдХреЗ рд▓рд┐рдП рд╣рдореЗрд╢рд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ) рдФрд░ рд╣реИрд╢ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдЦреЛрдЬ, рдЬреЛ рдЗрди рд╢рдмреНрджрдХреЛрд╢реЛрдВ рдХреЛ рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЗрд╖реНрдЯрддрдо рдЖрдзрд╛рд░ рдирд╣реАрдВ рдмрдирд╛рддрд╛ рд╣реИред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЧрдгрдирд╛ рд╕рджрд╕реНрдпреЛрдВ (
StdEnum.MEMBER
) рдХреЗ рд▓рд┐рдП рдЦреЛрдЬ рдПрдХ рд╢рдмреНрджрдХреЛрд╢ рдЦреЛрдЬ рд╣реИред
рд╣рдорд╛рд░рд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг
рд╣рдордиреЗ рд╕реА рдореЗрдВ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рдПрдиреНрдпреВрдорд░реЗрд╢рдиреНрд╕ рдФрд░ рдЬрд╛рд╡рд╛ рдореЗрдВ рд╕реБрдВрджрд░ рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд▓ рдПрдиреНрдпреВрдорд░реЗрд╢рдиреНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрдБрдЦ рдХреЗ рд╕рд╛рде рдПрдиреНрдпреВрдорд░реЗрд╢рдВрд╕ рдХреЗ рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛ред рдореБрдЦреНрдп рдХрд╛рд░реНрдп рдЬреЛ рд╣рдо рдШрд░ рдкрд░ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рдереЗ, рд╡реЗ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдереЗ:
- рдЧрдгрди рд╕рдВрднрд╡ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрдерд┐рд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП; рдпрд╣рд╛рдБ "рд╕реНрдерд┐рд░" рдХрд╛ рдЕрд░реНрде рдирд┐рдореНрди рд╣реИ - рдпрджрд┐ рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХреА рдШреЛрд╖рдгрд╛ рдХреЗ рджреМрд░рд╛рди рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рдЧрдгрдирд╛ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ, рддреЛ рдЗрд╕ рдкрд░ (рдФрд░ рдХреЗрд╡рд▓ рдЗрд╕ рд╕рдордп) рдЧрдгрдирд╛ рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдП;
- рдпрджрд┐ рдХрд┐рд╕реА рд╢реНрд░реЗрдгреА рдореЗрдВ рдПрдиреНрдпреБрдорд░реЗрд╢рди рдХреЗ рдирдП рд╕рджрд╕реНрдпреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдПрдиреНрдпреВрдорд░реЗрд╢рди (рдпрд╣ "рдЕрдВрддрд┐рдо" рдХреНрд▓рд╛рд╕ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП) - рдпрд╣ рдорд╛рдирдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рд▓рд╛рдЧреВ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рд╣реИ, рдЗрд╕ рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рде рдХрд┐ рд╡рд┐рд░рд╛рд╕рдд рдирд┐рд╖рд┐рджреНрдз рд╣реИ, рднрд▓реЗ рд╣реА рд╡рд┐рд░рд╛рд╕рдд рд╡рд░реНрдЧ рдирдП рд╕рджрд╕реНрдпреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рди рдХрд░реЗ;
- рдЧрдгрдирд╛ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдЧреБрдВрдЬрд╛рдЗрд╢ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП (рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ, рд╡рд┐рдзрд┐рдпреЛрдВ, рдЖрджрд┐)
рд╣рдо рдХреЗрд╡рд▓ рдорд╛рдорд▓реЗ рдореЗрдВ рдбрд┐рдХреНрд╢рдирд░реА рдЦреЛрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ - рдпрд╣ рдХрд┐рд╕реА рдорд╛рдирд╛рд░реНрде рд╕рджрд╕реНрдп рдХреЗ рд▓рд┐рдП рдорд╛рди
value
рдХрд╛ рд╡реНрдпреБрддреНрдХреНрд░рдо рдорд╛рдирдЪрд┐рддреНрд░рдг рд╣реИред рдЕрдиреНрдп рд╕рднреА рдЧрдгрдирд╛ рдХреЗрд╡рд▓ рдХрдХреНрд╖рд╛ рдШреЛрд╖рдгрд╛ рдХреЗ рджреМрд░рд╛рди рдПрдХ рдмрд╛рд░ рдХреА рдЬрд╛рддреА рд╣реИрдВ (рдЬрд╣рд╛рдВ рдЯрд╛рдЗрдк рдирд┐рд░реНрдорд╛рдг рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрдЯрд╛рдХреНрд▓рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)ред
рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд╡рд┐рдкрд░реАрдд, рд╣рдо рдХреЗрд╡рд▓ рд╕рджрд╕реНрдп рдореВрд▓реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд░реНрдЧ рдШреЛрд╖рдгрд╛ рдореЗрдВ
=
рд╕рд╛рдЗрди рдХреЗ рдмрд╛рдж рдкрд╣рд▓рд╛ рдорд╛рди рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВ:
рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ
A = 1, 'One'
рд╕рдВрдкреВрд░реНрдг рдЯреБрдкрд▓
1, "One"
рдорд╛рди
value
;
A: 'MyEnum' = 1, 'One'
рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ, рдХреЗрд╡рд▓
1
рдорд╛рди
value
рд░реВрдк
1
рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЖрдЧреЗ рддреНрд╡рд░рдг
__slots__
рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рд╕рдВрднрд╡ рд╣реЛред
__slots__
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдШреЛрд╖рд┐рдд рдкрд╛рдпрдерди рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ,
__slots__
рдХреЗ рд▓рд┐рдП
__dict__
рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд╣реАрдВ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЙрдирдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд╛рдореЛрдВ рдХреА рдореИрдкрд┐рдВрдЧ рд╣реЛрддреА рд╣реИ (рдЗрд╕рд▓рд┐рдП, рдЖрдк
__slots__
рдореЗрдВ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдЙрджрд╛рд╣рд░рдг рдХреА рдХрд┐рд╕реА рднреА рд╕рдВрдкрддреНрддрд┐ рдХреА рдШреЛрд╖рдгрд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ)ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛,
__slots__
рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдЙрджрд╛рд╣рд░рдг рдкреЙрдЗрдВрдЯрд░ рдореЗрдВ рдПрдХ рдирд┐рд░рдВрддрд░ рдСрдлрд╕реЗрдЯ рдкрд░ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдЧреБрдгреЛрдВ рдХреА рдЙрдЪреНрдЪ рдЧрддрд┐ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╣реИрд╢ рдЧрдгрдирд╛ рдФрд░ рд╣реИрд╢ рдЯреЗрдмрд▓ рд╕реНрдХреИрди рд╕реЗ рдмрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЕрддрд┐рд░рд┐рдХреНрдд рдЪрд┐рдкреНрд╕ рдХреНрдпрд╛ рд╣реИрдВ?
FastEnum 3.6 рд╕реЗ рдкрд╣рд▓реЗ рдкрд╛рдпрдерди рдХреЗ рдХрд┐рд╕реА рднреА рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкрд╛рдпрдерди 3.6 рдореЗрдВ рд▓рд╛рдЧреВ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ PyPi рд╕реЗ
typing
рдореЙрдбреНрдпреВрд▓ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓реЗрдЧреАред рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдЙрддреНрддрд░ рдирд╣реАрдВ рд╣реИред рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди PEP-484 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреБрдЫ рдХрд╛рд░реНрдпреЛрдВ, рд╡рд┐рдзрд┐рдпреЛрдВ, рдФрд░ рд╕рдВрдХреЗрдд рдХреЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рддрд░реНрдХ рдХреЗ рд▓рд┐рдП рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рдЕрд╕рдВрдЧрддрддрд╛ рдХреЗ рдХрд╛рд░рдг Python 3.5 рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐рд╕реА рднреА рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди, рдлрд┐рд░ рд╕реЗ,
__new__
рдореЗрдВ рдХреЛрдб рдХреА рдмрд╣реБрдд рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдЪрд░ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП PEP-526 рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИред рддреЛ рдкрд╛рдпрдерди 3.5 рдпрд╛ рддреЛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдЖрдк рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдкреЛрд░реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╣рдо рдЬрдм рднреА рд╕рдВрднрд╡ рд╣реЛ, рдХреНрдпреВрд░реЗрдЯрд░ рд▓реИрдмреНрд╕ рдореЗрдВ рдЯрд╛рдЗрдк рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЬрдЯрд┐рд▓ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдмрд╣реБрдд рдорджрдж рдХрд░рддрд╛ рд╣реИред рдЦреИрд░, рдЕрдВрдд рдореЗрдВ! рдЖрдк рд╕рдВрд╕реНрдХрд░рдг 3.6 рд╕реЗ рдкрд╣рд▓реЗ рдкрд╛рдпрдерди рдореЗрдВ рдлрдВрд╕ рдЬрд╛рдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдирдП рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдЖрдкрдХреЗ рдореМрдЬреВрджрд╛ рдХреЛрдб рдХреЗ рд╕рд╛рде рдХреЛрдИ рдкрд┐рдЫрдбрд╝реА рдЕрд╕рдВрдЧрддрддрд╛ рдирд╣реАрдВ рд╣реИ (рдмрд╢рд░реНрддреЗ рдХрд┐ рдЖрдк рдкрд╛рдпрдерди 2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ), рдФрд░ 3.5 рдХреА рддреБрд▓рдирд╛ рдореЗрдВ
asyncio
рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдмрд╣реБрдд рдХрд╛рдо рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╣рдорд╛рд░рд╛ рд╡рд┐рдЪрд╛рд░, рддрддреНрдХрд╛рд▓ рдЕрджреНрдпрддрди рдХреЗ рд▓рд╛рдпрдХ рд╣реИред
рдпрд╣ рдмрджрд▓реЗ рдореЗрдВ, рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд╡рд┐рдкрд░реАрдд
auto
рдХреЗ рд╡рд┐рд╢реЗрд╖ рдЖрдпрд╛рдд рдХреЛ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдмрдирд╛рддрд╛ рд╣реИред рдЖрдк рдмрд╕ рд╕рдВрдХреЗрдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЧрдгрдирд╛ рдХрд╛ рд╕рджрд╕реНрдп рдЗрд╕ рдорд╛рди рдХрд╛ рдЙрджрд╛рд╣рд░рдг рд╣реЛрдЧрд╛ рдмрд┐рдирд╛ рдореВрд▓реНрдп рдкреНрд░рджрд╛рди рдХрд┐рдП - рдФрд░ рдореВрд▓реНрдп рдЖрдкрдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдГ рдЙрддреНрдкрдиреНрди рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдпрджреНрдпрдкрд┐ рдлрд╛рд╕реНрдЯрдирдо рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рдЗрдерди 3.6 рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рд▓реЗрдХрд┐рди рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ рд╢рдмреНрджрдХреЛрд╢реЛрдВ рдореЗрдВ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ рдХреНрд░рдо рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рдирд╛ рдХреЗрд╡рд▓ рдкрд╛рдЗрдерди 3.7 рдореЗрдВ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ (рдФрд░ рд╣рдордиреЗ рдХреЗрд╕ 3.6 рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ рд╕реЗ
OrderedDict
рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдерд╛)ред рд╣рдо рдХрд┐рд╕реА рднреА рдЙрджрд╛рд╣рд░рдг рдХреЛ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдореВрд▓реНрдпреЛрдВ рдХрд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЙрддреНрдкрдиреНрди рдЖрджреЗрд╢ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЕрдЧрд░ рдбреЗрд╡рд▓рдкрд░ рдиреЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЛ рдПрдХ рдЧрдгрдирд╛ рд╕рджрд╕реНрдп рдХреЛ рдорд╛рди рджреЗрдиреЗ рдФрд░ рдЕрд╕рд╛рдЗрди рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдореВрд▓реНрдп рд╕реНрд╡рдпрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЗрддрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрджрд┐ рдЖрдкрдиреЗ рдЕрднреА рднреА рдкрд╛рдпрдерди 3.7 рдкрд░ рд╕реНрд╡рд┐рдЪ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рд╣рдордиреЗ рдЖрдкрдХреЛ рдЪреЗрддрд╛рд╡рдиреА рджреА рд╣реИред
рдЬрд┐рдиреНрд╣реЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди (1) рдХреЗ рдмрдЬрд╛рдп 0 (рд╢реВрдиреНрдп) рд╕реЗ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ
_ZERO_VALUED
рдХреА
_ZERO_VALUED
, рд╡реЗ
_ZERO_VALUED
рдПрдиреНрдпреВрдорд░реЗрд╢рди рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╕рдордп рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдкрд░рд┐рдгрд╛рдореА рдХрдХреНрд╖рд╛ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХреБрдЫ рдкреНрд░рддрд┐рдмрдВрдз рд╣реИрдВ: рдЧрдгрдирд╛ рдХреЗ рд╕рджрд╕реНрдпреЛрдВ рдХреЗ рд╕рднреА рдирд╛рдо рдХреИрдкрд┐рдЯрд▓ рдкрддреНрд░реЛрдВ рдореЗрдВ рд▓рд┐рдЦреЗ рдЬрд╛рдиреЗ рдЪрд╛рд╣рд┐рдП, рдЕрдиреНрдпрдерд╛ рд╡реЗ рдореЗрдЯрд╛рдХреНрд▓рд╕ рджреНрд╡рд╛рд░рд╛ рд╕рдВрд╕рд╛рдзрд┐рдд рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред
рдЕрдВрдд рдореЗрдВ, рдЖрдк рдЕрдкрдиреЗ рдПрдиреНрдпреВрдорд░реЗрд╢рдиреНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдЦреБрдж рдореЗрдЯрд╛рдХреНрд▓рд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рд╕рднреА рдЙрдкрд╡рд░реНрдЧреЛрдВ рдХреЛ рдореЗрдЯрд╛рдХреНрд▓рд╕ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ) - рдмрд╕ рдЗрд╕ рд╡рд░реНрдЧ рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рддрд░реНрдХ (рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдФрд░ рд╡рд┐рдзрд┐рдпреЛрдВ) рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ рдФрд░ рдПрдиреНрдпреВрдорд░реЗрд╢рди рдХреЗ рд╕рджрд╕реНрдпреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рди рдХрд░реЗрдВред (рдЗрд╕рд▓рд┐рдП рдХрдХреНрд╖рд╛ рдХреЛ "рдЕрдВрддрд┐рдо рд░реВрдк рдирд╣реАрдВ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛")ред рдЬрдм рдЖрдк рдЪрд╛рд╣реЗрдВ рддреЛ рдЗрд╕ рд╡рд░реНрдЧ рдХреЗ рдХрдИ рд╡рд┐рд░рд╛рд╕рдд рд╡рд╛рд▓реЗ рд╡рд░реНрдЧреЛрдВ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рд╡рд╛рд░рд┐рд╕реЛрдВ рдХреЗ рдкрд╛рд╕ рд╕реНрд╡рдпрдВ рдПрдХ рд╣реА рддрд░реНрдХ рд╣реЛрдЧрд╛ред
рдЙрдкрдирд╛рдо рдФрд░ рд╡реЗ рдХреИрд╕реЗ рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
рдорд╛рди рд▓реЗрдВ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣реИ:
package_a.some_lib_enum.MyEnum
рдФрд░ рдпрд╣ рд╣реИ рдХрд┐ MyEnum рд╡рд░реНрдЧ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
class MyEnum(metaclass=FastEnum): ONE: 'MyEnum' TWO: 'MyEnum'
рдЕрдм, рдЖрдкрдиреЗ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рдЖрдк рдХреБрдЫ рд░реАрдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ рдХреЛ рджреВрд╕рд░реЗ рдкреИрдХреЗрдЬ рдореЗрдВ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЖрдк рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдмрдирд╛рдПрдВ:
package_b.some_lib_enum.MyMovedEnum
рдЬрд╣рд╛рдВ MyMovedEnum рдХреЛ рдЗрд╕ рддрд░рд╣ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
class MyMovedEnum(MyEnum): pass
рдЕрдм рдЖрдк рдЙрд╕ рдЪрд░рдг рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВ рдЬрд┐рд╕ рдкрд░ рдкреБрд░рд╛рдиреЗ рдкрддреЗ рдкрд░ рд╕реНрдерд┐рдд рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдЕрдкреНрд░рдЪрд▓рд┐рдд рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдк рдЗрд╕ рдЧрдгрдирд╛ рдХреЗ рдЖрдпрд╛рдд рдФрд░ рдХреЙрд▓ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдЗрд╕ рдЧрдгрдирд╛ рдХрд╛ рдирдпрд╛ рдирд╛рдо (рдЗрд╕рдХрд╛ рдЙрдкрдирд╛рдо) рдЕрдм рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдП - рдЖрдк рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕ рдЙрдкрдирд╛рдо рдХреЗ рд╕рднреА рд╕рджрд╕реНрдп рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреБрд░рд╛рдиреЗ рдирд╛рдо рдХреЗ рд╕рд╛рде рд╡рд░реНрдЧ рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВред рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдбреЙрдХреНрдпреВрдореЗрдВрдЯреЗрд╢рди рдореЗрдВ, рдЖрдк рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐
MyEnum
рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдХреЛрдб рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрдЧрд▓реА рд░рд┐рд▓реАрдЬрд╝ рдореЗрдВред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЖрдкрдХрд╛ рдХреЛрдб
pickle
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЧрдгрди рд╕рджрд╕реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдЖрдкрдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░, рдЖрдк рдЕрдкрдиреЗ рдХреЛрдб рдореЗрдВ
MyMovedEnum
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ, рд╕рднреА рдЧрдгрди рд╕рджрд╕реНрдп рдЕрднреА рднреА
MyEnum
рдЙрджрд╛рд╣рд░рдг рд╣реИрдВред рдЖрдкрдХрд╛ рдЕрдЧрд▓рд╛ рдХрджрдо
MyEnum
рдФрд░
MyMovedEnum
рдХреА рдШреЛрд╖рдгрд╛рдУрдВ рдХреА
MyEnum
-
MyMovedEnum
рддрд╛рдХрд┐
MyMovedEnum
рдЙрдкрд╡рд░реНрдЧ рди рд╣реЛ рдФрд░ рдЕрдкрдиреЗ рд╕рднреА рд╕рджрд╕реНрдпреЛрдВ рдХреА
MyEnum
рд╕реНрд╡рдпрдВ рдХрд░ рд╕рдХреЗ; рджреВрд╕рд░реА рдУрд░,
MyEnum
, рдЕрдм рдХрд┐рд╕реА рднреА рд╕рджрд╕реНрдп рдХреА рдШреЛрд╖рдгрд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди
MyMovedEnum
рдХрд╛ рд╕рд┐рд░реНрдл рдПрдХ рдЙрдкрдирд╛рдо (рдЙрдкрд╡рд░реНрдЧ) рдмрди рдЬрд╛рддрд╛ рд╣реИред
рд╡рд╣ рд╕рдм рд╣реИред рдЬрдм рдЖрдк рдЕрдкрдиреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ
unpickle
рд╕реНрдЯреЗрдЬ рдкрд░ рдкреБрдирдГ рдЖрд░рдВрдн рдХрд░рддреЗ рд╣реИрдВ, рддреЛ
unpickle
рд╕рднреА рд╕рджрд╕реНрдпреЛрдВ рдХреЛ
MyMovedEnum
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдкреБрдирдГ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛
MyMovedEnum
рдФрд░ рдЗрд╕ рдирдП рд╡рд░реНрдЧ рдХреЗ рд╕рд╛рде рд╕рдВрдмрджреНрдз рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдЬрд┐рд╕ рдХреНрд╖рдг рдЖрдкрдХреЛ рдпрдХреАрди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рд╕рднреА рдСрдмреНрдЬреЗрдХреНрдЯ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ, рдлрд┐рд░ рд╕реЗ deserialized рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдФрд░ рд╕рдВрднрд╡рддрдГ рдлрд┐рд░ рд╕реЗ рдХреНрд░рдордмрджреНрдз рдФрд░ рднрдВрдбрд╛рд░ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд) - рдЖрдк рдПрдХ рдирдИ рд░рд┐рд▓реАрдЬрд╝ рдЬрд╛рд░реА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдЗрд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рдЕрдкреНрд░рдЪрд▓рд┐рдд рд╡рд░реНрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
MyEnum
рдХреЛ рдЕрдзрд┐рдХ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдХреЛрдб рдмреЗрд╕ рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЗрд╕реЗ рдЕрдкрдиреЗ рд▓рд┐рдП рдЖрдЬрд╝рдорд╛рдПрдБ:
github.com/QratorLabs/fastenum ,
pypi.org/project/fast-enum ред
рдХрд░реНрдо рдореЗрдВ рдкреЗрд╢реЗрд╡рд░реЛрдВ рд▓реЗрдЦрдХ рдЬрд╛рдирд╛ FastEnum -
santjagocorkez ред
UPD: рд╕рдВрд╕реНрдХрд░рдг 1.3.0 рдореЗрдВ, рдореМрдЬреВрджрд╛ рд╡рд░реНрдЧреЛрдВ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рд▓реЗрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЧрдпрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
int
,
float
,
str
ред рдРрд╕реЗ рдЧрдгрди рдХреЗ рд╕рджрд╕реНрдп рдПрдХ рд╕рдорд╛рди рдореВрд▓реНрдп (
IntEnum.MEMBER == int(value_given_to_member)
) рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдПрдХ рд╕рд╛рдл рд╡рд╕реНрддреБ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдирддрд╛ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рд╛ рдЙрддреНрддреАрд░реНрдг рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд╡реЗ рдЗрди рд╡рд┐рд░рд╛рд╕рдд рд╡рд░реНрдЧреЛрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВред рдпрд╣ рдмрджрд▓реЗ рдореЗрдВ, рдПрдирдо рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рд▓рд┐рдП рдЧрдП рдПрдирдо рдХреЗ рд╕рджрд╕реНрдп рдХреЛ
sys.exit()
рджреБрднрд╛рд╖рд┐рдпрд╛ рд╡рд╛рдкрд╕реА рдХреЛрдб рдХреЗ рд░реВрдк рдореЗрдВ
sys.exit()
рд▓рд┐рдП рдПрдХ рд╕реАрдзрд╛ рддрд░реНрдХ рд╣реЛрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред