рд╢рдмреНрджрдХреЛрд╢ рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди, рдЬреИрд╕рд╛ рдХрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╣реИ

рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рдорд╕реНрддрд┐рд╖реНрдХ рдХреА рд▓рдВрдмреА рдмрд╛рддрдЪреАрдд рдХреЗ рдмрд╛рдж, рдореИрдВ рдореЗрд░реЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рдкрд╛рдпрдерди рдореЗрдВ рд▓реМрдЯ рдЖрдпрд╛, рдФрд░ рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ рдХрд┐ рдореБрдЭреЗ рдХреБрдЫ рдпрд╛рдж рдЖ рд░рд╣реА рдереА, рдЕрд░реНрдерд╛рддреН рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕, рдЬрд┐рдирдХреЗ рдкрд╛рд╕ рд╣реИрд╢ рдЯреЗрдмрд▓ рд╣реИрдВ, рд╣рд╛рдБред рдлрд╝реБрдЕрдЙрдЙ, рд╢рд╛рдпрдж рдЖрдк рдХрд╣реЗрдВ, рдФрд░ рд╢рд╛рдпрдж рд╡реНрдпрд░реНрдеред

рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдмреЛрд▓рддреЗ рд╣реБрдП, рдореИрдВ рдПрдХ рдкреВрд░реНрдг-рд╡рд┐рдХрд╕рд┐рдд рдкрд╛рдпрдерди рдХреЛ dict рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдЗрд╕ рддрд░рд╣ рдХрд┐ рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреЗ рдЧреБрдгреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕рдХреЗ рдореВрд▓реНрдп рддрдХ рдкрд╣реБрдВрдЪрдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ред рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдореИрдВ a["name"] рдмрдЬрд╛рдп a.name рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реВрдБ:

>>> рдПред рдЖрдИрдбреА = рекреи
>>> рдПред рдирд╛рдо = "рдЬреЙрди"
>>> рдкреНрд░рд┐рдВрдЯ рдП
{ 'рдЖрдИрдбреА' : 42 , 'рдирд╛рдо' : 'рдЬреЙрди' }


рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд╢рдмреНрджрдХреЛрд╢ рдХреА рдорд╛рдирдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдмрдирд╛рдП рд░рдЦрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ:

>>> рдкреНрд░рд┐рдВрдЯ "рдЖрдИрдбреА:% (рдЖрдИрдбреА) рдбреА, рдирд╛рдо:% (рдирд╛рдо) s" % a
рдЖрдИрдбреА : 42 , рдирд╛рдо: рдЬреЙрди
>>> рдПред рдХреБрдВрдЬреА ( )
[ 'рдЖрдИрдбреА' , 'рдирд╛рдо' ]


рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛, рд╣реИ рдирд╛? рддреЛ рдпрд╣ рдЕрдЬрдЧрд░ рдХреЗ рд╕рд╛рде рд╣реА рдХреНрдпреЛрдВ рдирд╣реАрдВ?

рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди 1. рдорд╛рдереЗ рдкрд░ред


рдкрд╣рд▓реА рдмрд╛рдд рдЬреЛ рджрд┐рдорд╛рдЧ рдореЗрдВ рдЖрддреА рд╣реИ, рд╡рд╣ рдмрд╕ рдЙрди рд╕рднреА рдЬрд╛рджреБрдИ рддрд░реАрдХреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реИ рдЬрд┐рдирдХреА рд╣рдореЗрдВ рдЬрд╝рд░реВрд░рдд рд╣реИ:

рдХреНрд▓рд╛рд╕ рдбрд┐рдХреНрдЯ ( рддрд╛рдирд╛рд╢рд╛рд╣реА ) :
def __getattr__ ( рд╕реНрд╡рдпрдВ , рдХреБрдВрдЬреА ) :
рд╕реНрд╡ рд╡рд╛рдкрд╕ рдХрд░реЗрдВ [ рдХреБрдВрдЬреА ]
def __setattr__ ( рд╕реНрд╡рдпрдВ , рдХреБрдВрдЬреА, рдореВрд▓реНрдп ) :
рдЖрддреНрдо [ рдХреБрдВрдЬреА ] = рдореВрд▓реНрдп
def __delattr__ ( рд╕реНрд╡рдпрдВ , рдХреБрдВрдЬреА ) :
рдбреЗрд▓ рд╕реЗрд▓реНрдл [ рдХреА ]


рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдЖрдк рдереЛрдбрд╝рд╛ рдХрд░реАрдм рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рдо рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдХреЛрдб рдХреЛ рдХрдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди 2. рдЕрдЬрдЧрд░ рдХрд╛ рддрд╛рдУред


рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рдХреЗрд╡рд▓ рдХреБрдЫ рдЕрдирдмрд╛рдЙрдВрдб рддрд░реАрдХреЛрдВ рдХреЛ рджреВрд╕рд░реЛрдВ рдХреЗ рд╕рд╛рде рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЙрдирдХреЗ рдкрд╛рд╕ рдПрдХ рд╣реА рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╣реИрдВ:

рдХреНрд▓рд╛рд╕ рдбрд┐рдХреНрдЯ ( рддрд╛рдирд╛рд╢рд╛рд╣реА ) :
__getattr__ = рддрд╛рдирд╛рд╢рд╛рд╣реА ред __getitem__
__setattr__ = рддрд╛рдирд╛рд╢рд╛рд╣реА ред __setitem__
__delattr__ = рддрд╛рдирд╛рд╢рд╛рд╣ ред __delitem__


рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдмреЗрд╣рддрд░ рджрд┐рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдирд╛рдбрд╝реА рдФрд░ рдЧреИрд░-рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд▓ рд╣реИред рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдХреЗ рд╕рд╛рде рд░рд╛рдд рдХреЛ рд╕реЛрддреЗ рд╣реБрдП, рд╕реБрдмрд╣ рдореЗрдВ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рд╣реБрдЖ, рд╢рд╛рдпрдж рд╕рдмрд╕реЗ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рд╕рдорд╛рдзрд╛рдиред

рдХреНрд░рд┐рдпрд╛рдиреНрд╡рдпрди 3. рдЫреЛрдЯрд╛ рдЬрд╛рджреВред


рдХреНрд▓рд╛рд╕ рдбрд┐рдХреНрдЯ ( рддрд╛рдирд╛рд╢рд╛рд╣реА ) :
def __new__ ( cls , * args, ** kwargs ) :
рд╕реНрд╡ = рддрд╛рдирд╛рд╢рд╛рд╣ ред __new__ ( cls , * args, ** kwargs )
рд╕реНрд╡ ред __dict__ = рд╕реНрд╡
рд╕реНрд╡ рд▓реМрдЯ рдЖрдУ


рдХреНрдпрд╛ рдЖрдк рд╕рдордЭ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ? рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рд▓рд╛рдЗрди self.__dict__ = self ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╣рдорд╛рд░реА рд╡рд╕реНрддреБ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╢рдмреНрджрдХреЛрд╢ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЧреБрдгреЛрдВ рдХрд╛ рд╢рдмреНрджрдХреЛрд╢ рднреА рдХреНрдпреЛрдВ рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП? рдЕрдм, рдЬрдм рд╣рдо рдбрд┐рдХреНрдЯ рд╡рд░реНрдЧ рдХреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдпрд╛ рд╣рдЯрд╛рддреЗ рд╣реИрдВ, рддреЛ рдпреЗ рдкрд░рд┐рд╡рд░реНрддрди рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд╕реАрдзреЗ рд╢рдмреНрджрдХреЛрд╢ рдХреЗ рд░реВрдк рдореЗрдВ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░реЗрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рд╡реЗ рдПрдХ рд╣реА рд╕рдВрд╕реНрдерд╛ рдмрди рдЧрдП рд╣реИрдВред

>>> рдбреА = рдбрд┐рдХреНрдЯ ( рдП = 1 , рдмреА = 2 , рд╕реА = 3 )
>>> рдкреНрд░рд┐рдВрдЯ рдбреА
{ a тАЩ : рез , 'рд╕реАтАЩ : рей ,: рдмреА тАЩ : реи }
>>> рдкреНрд░рд┐рдВрдЯ рдбреАред a == d [ "a" ]
рдпрд╣ рд╕рдЪ рд╣реИ
>>> рдбреАред рдмреА = 7
>>> рдбреЗрд▓ рдбреАред рдЧ
>>> рдбреАред x = 4
>>> рдкреНрд░рд┐рдВрдЯ рдбреА
{ a тАЩ : рез , 'xтАЩ : рек ,: b тАЩ : 7 }
>>> рдкреНрд░рд┐рдВрдЯ рдбреАред рдЪрд╛рдмрд┐рдпрд╛рдБ ( ) , рдбреАред рдЖрдЗрдЯрдо ( )
[ 'рдП' , 'рдПрдХреНрд╕' , 'рдмреА' ] [ рез , рек ,, ]


рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдПрдХ рдФрд░ рдкреНрд░рдорд╛рдг рдорд┐рд▓рд╛ рдХрд┐ рдЕрдЬрдЧрд░ рдХреЗ рд╕рд╛рде рдорд┐рд▓рдХрд░ рдХрд┐рддрдиреА рдЙрдкрдпреЛрдЧреА рдФрд░ рд░реЛрдЪрдХ рдЪреАрдЬреЗрдВ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВред рдФрд░ рдЕрдЧрд░ рдЖрдк рд╕рдордЭрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕реЗ рдЕрдВрджрд░ рдХреИрд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдЦреВрдмрд╕реВрд░рддреА рд╕реЗ рдФрд░ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рдврдВрдЧ рд╕реЗ рднреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдмреЗрд╢рдХ, рдореИрдВрдиреЗ рдореМрд▓рд┐рдХ рд░реВрдк рд╕реЗ рдХреБрдЫ рднреА рдирдпрд╛ рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЙрди рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЬрд╣рд╛рдВ рдореБрдЭреЗ рдЖрдзреЗ-рдЯрд╛рдЗрдк рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ, рдореБрдЭреЗ рдЕрдм рдПрдХ рд╢рдмреНрджрдХреЛрд╢ рдФрд░ рдПрдХ рд╡рд╕реНрддреБ рдХреЗ рдмреАрдЪ рдЪрдпрди рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рдХреЛрдб рдереЛрдбрд╝рд╛ рд╕рд╛рдл рд╣реЛ рдЧрдпрд╛ рд╣реИред

рдХрд┐рд╕реА рднреА рдЯрд┐рдкреНрдкрдгреА рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреНрдпреЛрдВ рдЦрд░рд╛рдм рд╣реИ рдпрд╛ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдФрд░ рднреА рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рдврдВрдЧ рд╕реЗ рдХреИрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПред

Source: https://habr.com/ru/post/In129201/


All Articles