рдореБрдЦреНрдп рд╕рд╛рдордЧреНрд░реА рдкрд░ рдЬрд╛рдПрдБ

Python рдореЗрдВ рдПрдиреНрдХреИрдкреНрд╕реБрд▓реЗрд╢рди: рдПрдХ рд╡реНрдпрд╛рдкрдХ рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛

Python рд╡рд╕реНрддреБ-рдЙрдиреНрдореБрдЦ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЗрдВ рдПрдиреНрдХреИрдкреНрд╕реБрд▓реЗрд╢рди рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдмреБрдирд┐рдпрд╛рджреА рдмрд╛рддреЗрдВ рд╕реАрдЦреЗрдВред
┬╖ 11 рдорд┐ре░ рдкрдврд╝реЗрдВ

AI рдХреЗ рд╕рд╛рде рдЦреЛрдЬреЗрдВ

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

class Smartphone:
   def __init__(self, brand, os):
       self.brand = brand
       self.os = os

iphone = Smartphone("Apple", "iOS 17")

рдХрдИ Python рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдЗрд╕ рддрд░рд╣ рдХрдХреНрд╖рд╛рдПрдБ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдкреНрд░реЛ Pythonistas рджреНрд╡рд╛рд░рд╛ рдЕрдкрдирд╛рдИ рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╕рд░реНрд╡реЛрддреНрддрдо рдкреНрд░рдерд╛рдУрдВ рд╕реЗ рдХрд╛рдлреА рджреВрд░ рд╣реИред рдЗрд╕ рдХреНрд▓рд╛рд╕ рдХреА рд╕рдорд╕реНрдпрд╛ рддрдм рд╕реНрдкрд╖реНрдЯ рд╣реЛрддреА рд╣реИ рдЬрдм рдЖрдк рдЗрд╕рдХреЗ рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ:

iphone.os = "Android"
print(iphone.os)
Android

рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП, Android рдкрд░ рдЪрд▓ рд░рд╣рд╛ рдПрдХ iPhoneтАКтАФтАКрдХреНрдпрд╛ рд╣реА рдЕрдЬреАрдм рдмрд╛рдд рд╣реЛрдЧреА! рд╕рд╛рдл рд╣реИ, рд╣рдореЗрдВ рдЕрдкрдиреА рдХреНрд▓рд╛рд╕ рдХреЗ рднреАрддрд░ рдХреБрдЫ рд╕реАрдорд╛рдПрдБ рддрдп рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рддрд╛рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрд╕рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рди рдмрджрд▓ рд╕рдХреЗрдВред

рдпрджрд┐ рд╡реЗ рдмрджрд▓рд╛рд╡ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВ рднреА, рддреЛ рд╡реЗ рд╣рдорд╛рд░реЗ рдирд┐рдпрдореЛрдВ рдХреЗ рддрд╣рдд, рд╣рдорд╛рд░реА рд╢рд░реНрддреЛрдВ рдкрд░ рд╣реЛрдВред рд▓реЗрдХрд┐рди рд╣рдо рдлрд┐рд░ рднреА рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╕рддрд╣ рдкрд░ .os рдпрд╛ .brand рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯ рд╡реИрд╕реЗ рд╣реА рдмрдиреЗ рд░рд╣реЗрдВред

рдЗрди рд╕рднреА рдмрд╛рддреЛрдВ рдХреЛ рдПрдиреНрдХреИрдкреНрд╕реБрд▓реЗрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмрдврд╝рд╛рд╡рд╛ рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ, рд╣рдо рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╕реАрдЦреЗрдВрдЧреЗред рдЖрдЗрдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ!

Python рдореЗрдВ рдПрдиреНрдХреИрдкреНрд╕реБрд▓реЗрд╢рди рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ?

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

Java рдФрд░ C++ рдЬреИрд╕реА рдЕрдиреНрдп OOP рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ, рдПрдиреНрдХреИрдкреНрд╕реБрд▓реЗрд╢рди рдХреЛ public, private рдпрд╛ protected рдЬреИрд╕реЗ рдПрдХреНрд╕реЗрд╕ рдореЙрдбрд┐рдлрд╝рд╛рдпрд░реНрд╕ рд╕реЗ рд╕рдЦреНрддреА рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди Python рдореЗрдВ рд╡реЗ рдирд╣реАрдВ рд╣реИрдВ:

рд╡рд┐рд╢реЗрд╖рддрд╛PythonJavaC++
рдПрдХреНрд╕реЗрд╕ рдореЙрдбрд┐рдлрд╝рд╛рдпрд░реНрд╕рдХреЛрдИ рд▓рд╛рдЧреВ рдореЙрдбрд┐рдлрд╝рд╛рдпрд░ рдирд╣реАрдВ; рдиреЗрдорд┐рдВрдЧ рдХрдиреНрд╡реЗрдВрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ (_protected,┬а__private)public,┬аprotected,┬аprivate рдХреАрд╡рд░реНрдб рд╕реЗ рд▓рд╛рдЧреВpublic,┬аprotected,┬аprivate рдХреАрд╡рд░реНрдб рд╕реЗ рд▓рд╛рдЧреВ
Getter/Setter рдореЗрдердбреНрд╕рд╡реИрдХрд▓реНрдкрд┐рдХ, рдирд┐рдпрдВрддреНрд░рд┐рдд рдПрдХреНрд╕реЗрд╕ рдХреЗ рд▓рд┐рдП рдЕрдХреНрд╕рд░ @property рдбреЗрдХреЛрд░реЗрдЯрд░ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧрд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдерд╛, рдЖрдорддреМрд░ рдкрд░ рдореЗрдердбреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВрд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдерд╛, рдЖрдорддреМрд░ рдкрд░ рдореЗрдердбреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ
рдбреЗрдЯрд╛ рдПрдХреНрд╕реЗрд╕рдиреЗрдорд┐рдВрдЧ рдХрдиреНрд╡реЗрдВрд╢рдВрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реБрд▓рдн; рдбреЗрд╡рд▓рдкрд░ рдХреЗ рдЕрдиреБрд╢рд╛рд╕рди рдкрд░ рдирд┐рд░реНрднрд░рдПрдХреНрд╕реЗрд╕ рдореЙрдбрд┐рдлрд╝рд╛рдпрд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд; рдХрдВрдкрд╛рдЗрд▓рд░ рджреНрд╡рд╛рд░рд╛ рд▓рд╛рдЧреВрдПрдХреНрд╕реЗрд╕ рдореЙрдбрд┐рдлрд╝рд╛рдпрд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд; рдХрдВрдкрд╛рдЗрд▓рд░ рджреНрд╡рд╛рд░рд╛ рд▓рд╛рдЧреВ
рджрд░реНрд╢рди"рд╣рдо рд╕рднреА рдпрд╣рд╛рдБ рд╡рдпрд╕реНрдХ рд╣реИрдВ" - рдкрд░рдВрдкрд░рд╛рдУрдВ рдФрд░ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдкрд░ рдирд┐рд░реНрднрд░рдПрдХреНрд╕реЗрд╕ рдХрдВрдЯреНрд░реЛрд▓ рдХрд╛ рд╕рдЦреНрдд рдЕрдиреБрдкрд╛рд▓рдирдПрдХреНрд╕реЗрд╕ рдХрдВрдЯреНрд░реЛрд▓ рдХрд╛ рд╕рдЦреНрдд рдЕрдиреБрдкрд╛рд▓рди

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

Python рдореЗрдВ рдПрдХреНрд╕реЗрд╕ рдореЙрдбрд┐рдлрд╝рд╛рдпрд░реНрд╕

рдорд╛рди рд▓реАрдЬрд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдпрд╣ рд╕рд░рд▓ рдХреНрд▓рд╛рд╕ рд╣реИ:

class Tree:
   def __init__(self, height):
       self.height = height

pine = Tree(20)
print(pine.height)
20

рдЗрд╕рдореЗрдВ рдПрдХрдорд╛рддреНрд░ height рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдкреНрд░рд┐рдВрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕реЗ рдХрд┐рд╕реА рднреА рдорд╛рди рдореЗрдВ рдмрджрд▓ рднреА рд╕рдХрддреЗ рд╣реИрдВ:

pine.height = 50
pine.height
50
pine.height = "Grandma"
pine.height
'Grandma'

рддреЛ, рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдХреИрд╕реЗ рдмрддрд╛рдПрдБ рдХрд┐ height рдмрджрд▓рдирд╛ рд╡рд░реНрдЬрд┐рдд рд╣реИ? рдЦреИрд░, рд╣рдо рдЗрд╕реЗ рдПрдХ protected member рдореЗрдВ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдПрдХ рдЕрдЧреНрд░рд╡рд░реНрддреА рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рдЬреЛрдбрд╝рдХрд░:

class Tree:
   def __init__(self, height):
       self._height = height

pine = Tree(20)
pine._height
20

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

рддреЛ, рд╣рдо рдЗрд╕реЗ рднреА рдХреИрд╕реЗ рд░реЛрдХреЗрдВ? рдПрдХ рдФрд░ рдкрд░рдВрдкрд░рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗтАКтАФтАКрдПрдЯреНрд░рд┐рдмреНрдпреВрдЯ рдХреЛ рдбрдмрд▓ рдЕрдЧреНрд░рд╡рд░реНрддреА рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рдЬреЛрдбрд╝рдХрд░ рдПрдХ private member рдореЗрдВ рдмрджрд▓ рджреЗрдВ:

class Tree:
   def __init__(self, height):
       self.__height = height


pine = Tree(20)
pine.__height
AttributeError: 'Tree' object has no attribute '__height'

рдЕрдм, рдпрджрд┐ рдХреЛрдИ рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИ, рддреЛ Python рддреНрд░реБрдЯрд┐ рдЙрдард╛рдПрдЧрд╛, рд╕рдВрд╢реЛрдзрди рдХреА рдмрд╛рдд рддреЛ рджреВрд░ рд░рд╣реАред

рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдЖрдкрдиреЗ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдХрд┐ рд╣рдордиреЗ рдЕрднреА рдХреНрдпрд╛ рдХрд┐рдпрд╛? рд╣рдордиреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рд╕реЗ рдЕрдкрдиреЗ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рд╕реЗ рдЬреБрдбрд╝реА рдПрдХрдорд╛рддреНрд░ рдЬрд╛рдирдХрд╛рд░реА рдЫрд┐рдкрд╛ рджреАред рд╣рдорд╛рд░реА рдХреНрд▓рд╛рд╕ рдмреЗрдХрд╛рд░ рд╣реЛ рдЧрдИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХреЗ рдкрд╛рд╕ рдХреЛрдИ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯ рдирд╣реАрдВ рд╣реИред

рддреЛ, рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдкреЗрдбрд╝ рдХреА рдКрдБрдЪрд╛рдИ рдХреИрд╕реЗ рдЙрдЬрд╛рдЧрд░ рдХрд░реЗрдВ рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдХреИрд╕реЗ рдПрдХреНрд╕реЗрд╕ рдФрд░ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП? рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдкреЗрдбрд╝ рдХреА рдКрдБрдЪрд╛рдИ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реАрдорд╛ рдХреЗ рднреАрддрд░ рд╣реЛ рдФрд░ рдХреЗрд╡рд▓ рдкреВрд░реНрдгрд╛рдВрдХ рдорд╛рди рд╣реЛрдВред рд╣рдо рдЗрд╕реЗ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд░реЗрдВ?

рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░, рдЖрдкрдХрд╛ Java-рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдорд┐рддреНрд░ getter рдФрд░ setter рдореЗрдердбреНрд╕ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗ рд╕рдХрддрд╛ рд╣реИред рддреЛ, рдкрд╣рд▓реЗ рдЗрд╕реЗ рдЖрдЬрд╝рдорд╛рддреЗ рд╣реИрдВ:

class Tree:
   def __init__(self, height):
       self.__height = height

   def get_height(self):
       return self.__height

   def set_height(self, new_height):
       if not isinstance(new_height, int):
           raise TypeError("Tree height must be an integer")
       if 0 < new_height <= 40:
           self.__height = new_height
       else:
           raise ValueError("Invalid height for a pine tree")


pine = Tree(20)
pine.get_height()
20

рдЗрд╕ рддрд░реАрдХреЗ рд╕реЗ, рдЖрдк рдПрдХ рдирд┐рдЬреА рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯ __height рдмрдирд╛рддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ get_height рдФрд░ set_height рдореЗрдердбреНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рддрд░реАрдХреЗ рд╕реЗ рдЗрд╕реЗ рдПрдХреНрд╕реЗрд╕ рдФрд░ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рджреЗрддреЗ рд╣реИрдВред

pine.set_height(25)

pine.get_height()
25

рдирдпрд╛ рдорд╛рди рд╕реЗрдЯ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, set_height рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдирдИ рдКрдБрдЪрд╛рдИ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реАрдорд╛ рдХреЗ рднреАрддрд░ рдФрд░ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рд╣реЛред

pine.set_height("Password")
TypeError: Tree height must be an integer

рд▓реЗрдХрд┐рди рдпреЗ рдореЗрдердбреНрд╕ рдПрдХ рд╕рд░рд▓ рдСрдкрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдЬрд╝рд░реВрд░рдд рд╕реЗ рдЬрд╝реНрдпрд╛рджрд╛ рд▓рдЧрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕ рддрд░рд╣ рдХрд╛ рдХреЛрдб рд▓рд┐рдЦрдирд╛ рднреА рднрджреНрджрд╛ рд▓рдЧрддрд╛ рд╣реИ:

# Increase height by 5
pine.set_height(pine.get_height() + 5)

рдХреНрдпрд╛ рдпрд╣ рдФрд░ рд╕реБрдВрджрд░ рдФрд░ рдкрдардиреАрдп рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдпрджрд┐ рд╣рдо рдпрд╣ рдХреЛрдб рд▓рд┐рдЦ рд╕рдХреЗрдВ:

pine.height += 5

рдФрд░ рдлрд┐рд░ рднреА рдКрдБрдЪрд╛рдИ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдФрд░ рд╕реАрдорд╛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХреЗрдВ? рдЬрд╡рд╛рдм рд╣реИ рд╣рд╛рдБ, рдФрд░ рдЕрдЧрд▓реЗ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рд╣рдо рдпрд╣реА рдХрд░рдирд╛ рд╕реАрдЦреЗрдВрдЧреЗред

Python рдХреНрд▓рд╛рд╕реЗрд╕ рдореЗрдВ @property рдбреЗрдХреЛрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ

рд╣рдо рдПрдХ рдирдИ рддрдХрдиреАрдХ рдкреЗрд╢ рдХрд░рддреЗ рд╣реИрдВтАКтАФтАКрдПрдЯреНрд░рд┐рдмреНрдпреВрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рдкреНрд░реЙрдкрд░реНрдЯреАрдЬрд╝ рдмрдирд╛рдирд╛:

class Tree:
   def __init__(self, height):
       # First, create a private or protected attribute
       self.__height = height

   @property
   def height(self):
       return self.__height

pine = Tree(17)
pine.height
17

рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЫрд┐рдкреЗ рд╣реБрдП рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯ __height рдХреЛ рдРрд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд░реЗрдВ рдорд╛рдиреЛ рд╡рд╣ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯ height рд╣реЛред рдЗрд╕рдХреЗ рд▓рд┐рдП, рд╣рдо height рдирд╛рдордХ рдПрдХ рдореЗрдердб рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ self.__height рд▓реМрдЯрд╛рддрд╛ рд╣реИ рдФрд░ рдЙрд╕реЗ @property рд╕реЗ рдбреЗрдХреЛрд░реЗрдЯ рдХрд░рддреЗ рд╣реИрдВред

рдЕрдм, рд╣рдо height рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдирд┐рдЬреА рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯ рддрдХ рдкрд╣реБрдБрдЪ рд╕рдХрддреЗ рд╣реИрдВ:

pine.height
17

рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрд╕реЗ рд╕рдВрд╢реЛрдзрд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ:

pine.height = 15
AttributeError: can't set attribute 'height'

рддреЛ, рд╣рдо height(self, new_height) рдирд╛рдо рдХрд╛ рдПрдХ рдФрд░ рдореЗрдердб рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ height.setter рдбреЗрдХреЛрд░реЗрдЯрд░ рд╕реЗ рд░реИрдк рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдореЗрдердб рдХреЗ рдЕрдВрджрд░, рд╣рдо рд╡рд╣ рд▓реЙрдЬрд┐рдХ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдКрдБрдЪрд╛рдИ рдХреЗ рд▓рд┐рдП рд╡рд╛рдВрдЫрд┐рдд рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдФрд░ рд╕реАрдорд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ:

class Tree:
   def __init__(self, height):
       self.__height = height

   @property
   def height(self):
       return self.__height

   @height.setter
   def height(self, new_height):
       if not isinstance(new_height, int):
           raise TypeError("Tree height must be an integer")
       if 0 < new_height <= 40:
           self.__height = new_height
       else:
           raise ValueError("Invalid height for a pine tree")

рдЕрдм, рдЬрдм рдХреЛрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ height рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИ, рддреЛ @height.setter рдХреЙрд▓ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╕рд╣реА рдорд╛рди рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП:

pine = Tree(10)

pine.height = 33  # Calling @height.setter
pine.height = 45  # An error is raised
ValueError: Invalid height for a pine tree

рд╣рдо рдбреЙрдЯ-рдиреЛрдЯреЗрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ height рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯ рдХреЛ рдХреИрд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛рдП, рдЗрд╕реЗ @height.getter рд╕реЗ рдХрд╕реНрдЯрдорд╛рдЗрдЬрд╝ рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

class Tree:
   def __init__(self, height):
       self.__height = height

   @property
   def height(self):
       return self.__height

   @height.getter
   def height(self):
       # You can return a custom version of height
       return f"This tree is {self.__height} meters"


pine = Tree(33)

pine.height
'This tree is 33 meters'

рдпрджреНрдпрдкрд┐ рд╣рдордиреЗ pine рдХреЛ рдкреВрд░реНрдгрд╛рдВрдХ рдКрдБрдЪрд╛рдИ рдХреЗ рд╕рд╛рде рдмрдирд╛рдпрд╛, рд╣рдо @height.getter рд╕реЗ рдЙрд╕рдХреЗ рд▓реМрдЯрд╛рдП рдЧрдП рдорд╛рди рдХреЛ рдмрджрд▓ рд╕рдХреЗред

рдпреЗ рдЙрджрд╛рд╣рд░рдг рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо Python рдХреНрд▓рд╛рд╕ рдореЗрдВ рдПрдиреНрдХреИрдкреНрд╕реБрд▓реЗрд╢рди рдХреЛ рдХреИрд╕реЗ рдмрдврд╝рд╛рд╡рд╛ рджреЗ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╛рдж рд░рдЦреЗрдВ, рдПрдиреНрдХреИрдкреНрд╕реБрд▓реЗрд╢рди рдЕрдм рднреА рдПрдХ рдкрд░рдВрдкрд░рд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдЖрдВрддрд░рд┐рдХ рдирд┐рдЬреА рд╕рджрд╕реНрдп __height рдХреЛ рдлрд┐рд░ рднреА рддреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ:

pine._Tree__height = "Gotcha!"

pine.height
'This tree is Gotcha! meters'

Python рдХреНрд▓рд╛рд╕реЗрд╕ рдореЗрдВ рд╕рдм рдХреБрдЫ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдирд┐рдЬреА рдореЗрдердбреНрд╕ рднреАред рдпрд╣ рдХреЛрдИ рдбрд┐рдЬрд╝рд╛рдЗрди рдЦрд╛рдореА рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ тАЬрд╣рдо рд╕рднреА рдпрд╣рд╛рдБ рд╡рдпрд╕реНрдХ рд╣реИрдВтАЭ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИред

рдпрд╣рд╛рдБ рдЙрди Python рдПрдХреНрд╕реЗрд╕ рдореЙрдбрд┐рдлрд╝рд╛рдпрд░реНрд╕ рдХрд╛ рд╕рд╛рд░рд╛рдВрд╢ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдордиреЗ рдЕрднреА рджреЗрдЦрд╛:

рдореЙрдбрд┐рдлрд╝рд╛рдпрд░/рдкрд░рдВрдкрд░рд╛рд╡рд┐рд╡рд░рдгрдЙрджрд╛рд╣рд░рдг
Publicрдбрд┐рдлрд╝реЙрд▓реНрдЯ рдПрдХреНрд╕реЗрд╕ рд╕реНрддрд░; рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯреНрд╕ рдФрд░ рдореЗрдердбреНрд╕ рдХреНрд▓рд╛рд╕ рдХреЗ рдмрд╛рд╣рд░ рд╕реЗ рд╕реБрд▓рднself.attribute
ProtectedрдПрдХрд▓ рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рджреНрд╡рд╛рд░рд╛ рд╕реВрдЪрд┐рдд; рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдПрдХреНрд╕реЗрд╕ рджрд░реНрд╢рд╛рдиреЗ рдХреА рдкрд░рдВрдкрд░рд╛self._attribute
Privateрдбрдмрд▓ рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рджреНрд╡рд╛рд░рд╛ рд╕реВрдЪрд┐рдд; рдиреЗрдо-рдореИрдВрдЧрд▓рд┐рдВрдЧ рд╕реАрдорд┐рдд рдПрдХреНрд╕реЗрд╕ рдкреНрд░рддрд┐рдмрдВрдз рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИself.__attribute
Properties@property┬аdecorator рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд┐рдЬреА рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯреНрд╕ рддрдХ рдирд┐рдпрдВрддреНрд░рд┐рдд рдПрдХреНрд╕реЗрд╕ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ@property def attribute(self):
Read-only Properties@attribute.setter рдирд╣реАрдВ; рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓-рдкрдврд╝рдиреЗ рдХрд╛ рдПрдХреНрд╕реЗрд╕ рджреЗрддрд╛ рд╣реИ@property def attribute(self):

рдПрдиреНрдХреИрдкреНрд╕реБрд▓реЗрд╢рди рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╕рдордп рд╕рд░реНрд╡реЛрддреНрддрдо рдкреНрд░рдерд╛рдПрдБ

рдХреБрдЫ рд╕рд░реНрд╡реЛрддреНрддрдо рдкреНрд░рдерд╛рдПрдБ рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдкрд╛рд▓рди рдХрд░рдХреЗ рдЖрдк рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХрд╛ рдХреЛрдб рдЕрдиреНрдп рдЕрдиреБрднрд╡реА OOPistas рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦреЗ рдХреЛрдб рдХреЗ рд╕рд╛рде рдЕрдЪреНрдЫреА рддрд░рд╣ рддрд╛рд▓рдореЗрд▓ рдмрд┐рдард╛рдП:

  1. рдкреНрд░реЛрдЯреЗрдХреНрдЯреЗрдб рдпрд╛ рдкреНрд░рд╛рдЗрд╡реЗрдЯ рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯреНрд╕ рдпрд╛ рдореЗрдердбреНрд╕ рдмрдирд╛рдПрдБ рдпрджрд┐ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдЖрдк рдХрд░рддреЗ рд╣реИрдВред рдкреНрд░реЛрдЯреЗрдХреНрдЯреЗрдб рдпрд╛ рдкреНрд░рд╛рдЗрд╡реЗрдЯ рдореЗрдВрдмрд░реНрд╕ рдкреНрд░рд▓реЗрдЦрди рд╕реЗ рдмрд╛рд╣рд░ рд░рд╣рддреЗ рд╣реИрдВ рдФрд░ рджреВрд╕рд░реЛрдВ рдХреЛ рд╕рдВрдХреЗрдд рджреЗрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк, рдбреЗрд╡рд▓рдкрд░, рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕реВрдЪрдирд╛ рдХреЗ рдЙрдиреНрд╣реЗрдВ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдЙрдирдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рд╣рддреЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рддреЗ рд╣реИрдВред
  2. рд╣рд░ рдПрдХ рдХреНрд▓рд╛рд╕ рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯ рдХреЗ рд▓рд┐рдП рдкреНрд░реЙрдкрд░реНрдЯреА рдмрдирд╛рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред рдХрдИ рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯреНрд╕ рд╡рд╛рд▓реА рдмрдбрд╝реА рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ attr.getter рдФрд░ attr.setter рдореЗрдердбреНрд╕ рд▓рд┐рдЦрдирд╛ рд╕рд┐рд░рджрд░реНрдж рдмрди рд╕рдХрддрд╛ рд╣реИред
  3. рд╣рд░ рдмрд╛рд░ рдЬрдм рдХреЛрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░реЛрдЯреЗрдХреНрдЯреЗрдб рд╕рджрд╕реНрдп (_) рдПрдХреНрд╕реЗрд╕ рдХрд░реЗ рддреЛ рдЪреЗрддрд╛рд╡рдиреА рджреЗрдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред
  4. рдкреНрд░рд╛рдЗрд╡реЗрдЯ рд╕рджрд╕реНрдпреЛрдВ рдХрд╛ рд╕рдВрдпрдо рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдЗрд╕ рдкрд░рдВрдкрд░рд╛ рд╕реЗ рдЕрдкрд░рд┐рдЪрд┐рдд рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреЛ рдЕрдкрдардиреАрдп рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред
  5. рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рдкрд░ рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреЗрдВред рдХреНрдпреЛрдВрдХрд┐ рдПрдиреНрдХреИрдкреНрд╕реБрд▓реЗрд╢рди рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдХреЛрдб рдЕрдиреБрд░рдХреНрд╖рдг рдФрд░ рдбреЗрдЯрд╛ рд╕реБрд░рдХреНрд╖рд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдирд╛ рд╣реИ, рдЕрдкрдиреА рдХреНрд▓рд╛рд╕ рдХреЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рд╡рд░рдгреЛрдВ рдХреЛ рдкреВрд░реА рддрд░рд╣ рди рдЫрд┐рдкрд╛рдПрдБред
  6. рдпрджрд┐ рдЖрдк рдХреЗрд╡рд▓-рдкрдврд╝рдиреЗ рд╡рд╛рд▓реА рдкреНрд░реЙрдкрд░реНрдЯреАрдЬрд╝ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ @attr.setter рдореЗрдердб рд▓рд╛рдЧреВ рди рдХрд░реЗрдВред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░реЙрдкрд░реНрдЯреА рдХреЛ рдПрдХреНрд╕реЗрд╕ рдХрд░ рдкрд╛рдПрдБрдЧреЗ рдкрд░ рд╕рдВрд╢реЛрдзрд┐рдд рдирд╣реАрдВ рдХрд░ рдкрд╛рдПрдБрдЧреЗред
  7. рд╣рдореЗрд╢рд╛ рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдПрдиреНрдХреИрдкреНрд╕реБрд▓реЗрд╢рди рдПрдХ рдкрд░рдВрдкрд░рд╛ рд╣реИ, Python рдХреА рд╕рд┐рдВрдЯреИрдХреНрд╕ рджреНрд╡рд╛рд░рд╛ рд╕рдЦреНрддреА рд╕реЗ рд▓рд╛рдЧреВ рдкрд╣рд▓реВ рдирд╣реАрдВред
  8. рд╕рд░рд▓ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП, dataclasses рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдЬреЛ рдЖрдкрдХреЛ рдПрдХ рд╣реА рдкрдВрдХреНрддрд┐ рдХреЗ рдХреЛрдб рд╕реЗ рдХреНрд▓рд╛рд╕ рдПрдиреНрдХреИрдкреНрд╕реБрд▓реЗрд╢рди рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рджреЗрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, dataclasses рд╕рд░рд▓ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╣реЛрддреА рд╣реИрдВ рдЬрд┐рдирдХреЗ рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯреНрд╕ рдФрд░ рдореЗрдердбреНрд╕ рдкреВрд░реНрд╡рд╛рдиреБрдореЗрдп рд╣реЛрдВред рдЕрдзрд┐рдХ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ dataclasses рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рджреЗрдЦреЗрдВред

рдирд┐рд╖реНрдХрд░реНрд╖ рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдВрд╕рд╛рдзрди

рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ, рд╣рдордиреЗ Python рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ-рдУрд░рд┐рдПрдВрдЯреЗрдб рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рдореБрдЦреНрдп рд╕реНрддрдВрднреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ: рдПрдиреНрдХреИрдкреНрд╕реБрд▓реЗрд╢рди рд╕реАрдЦрд╛ред

рдПрдиреНрдХреИрдкреНрд╕реБрд▓реЗрд╢рди рдЖрдкрдХреЛ рдЕрдкрдиреА рдХреНрд▓рд╛рд╕ рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рдЕрдВрджрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдбреЗрдЯрд╛ рддрдХ рдирд┐рдпрдВрддреНрд░рд┐рдд рдПрдХреНрд╕реЗрд╕ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рджреЗрддреА рд╣реИред рдЗрд╕рд╕реЗ рдЖрдк рд╕реНрд╡рдЪреНрдЫ, рдкрдардиреАрдп рдФрд░ рдХреБрд╢рд▓ рдХреЛрдб рд▓рд┐рдЦ рдкрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЕрдкрдиреА рдХреНрд▓рд╛рд╕ рдбреЗрдЯрд╛ рдореЗрдВ рдЖрдХрд╕реНрдорд┐рдХ рдмрджрд▓рд╛рд╡ рдпрд╛ рд╣рдЯрд╛рдиреЗ рд╕реЗ рдмрдЪрд╛рд╡ рд╣реЛрддрд╛ рд╣реИред

OOP рдЬреНрдЮрд╛рди рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдБ рдХреБрдЫ рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рд╕рдВрд╕рд╛рдзрди рд╣реИрдВ:

FAQs

Python рдореЗрдВ рдПрдиреНрдХреИрдкреНрд╕реБрд▓реЗрд╢рди рдПрдмреНрд╕реНрдЯреНрд░реИрдХреНрд╢рди рд╕реЗ рдХреИрд╕реЗ рдЕрд▓рдЧ рд╣реИ?

рдПрдиреНрдХреИрдкреНрд╕реБрд▓реЗрд╢рди рдХрд╛ рдорддрд▓рдм рд╣реИ рдбреЗрдЯрд╛ рдФрд░ рдЙрд╕ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдореЗрдердбреНрд╕ рдХреЛ рдПрдХ рдЗрдХрд╛рдИ, рдЬреИрд╕реЗ рдХрд┐ рдХреНрд▓рд╛рд╕, рдореЗрдВ рд╕рдореЗрдЯрдирд╛ рдФрд░ рдХреБрдЫ рдШрдЯрдХреЛрдВ рддрдХ рдкрд╣реБрдБрдЪ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рдирд╛ред рджреВрд╕рд░реА рдУрд░, рдПрдмреНрд╕реНрдЯреНрд░реИрдХреНрд╢рди рдХрд╛ рдорддрд▓рдм рд╣реИ рдЬрдЯрд┐рд▓ рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдХреЛ рдЫрд┐рдкрд╛рдирд╛ рдФрд░ рдХреЗрд╡рд▓ рдЖрд╡рд╢реНрдпрдХ рднрд╛рдЧреЛрдВ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдирд╛ред рдЬрд╣рд╛рдБ рдПрдиреНрдХреИрдкреНрд╕реБрд▓реЗрд╢рди рдХрд╛ рдлреЛрдХрд╕ рдПрдХреНрд╕реЗрд╕ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рдкрд░ рд╣реИ, рд╡рд╣реАрдВ рдПрдмреНрд╕реНрдЯреНрд░реИрдХреНрд╢рди рдХрд╛ рдлреЛрдХрд╕ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдкрд░ рд╣реИред

рдХреНрдпрд╛ рдПрдиреНрдХреИрдкреНрд╕реБрд▓реЗрд╢рди рдлрдВрдХреНрд╢рдирд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЗрдВ рдЙрдкрдпреЛрдЧ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдпрд╛ рдпрд╣ рдХреЗрд╡рд▓ OOP рддрдХ рд╕реАрдорд┐рдд рд╣реИ?

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

Python рдореЗрдВ рдПрдиреНрдХреИрдкреНрд╕реБрд▓реЗрд╢рди рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╕рдордп рдХрд┐рди рд╕рд╛рдорд╛рдиреНрдп рдЧрд▓рддрд┐рдпреЛрдВ рд╕реЗ рдмрдЪрдирд╛ рдЪрд╛рд╣рд┐рдП?

рд╕рд╛рдорд╛рдиреНрдп рдЧрд▓рддрд┐рдпреЛрдВ рдореЗрдВ рдкреНрд░рд╛рдЗрд╡реЗрдЯ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХрд╛ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧ рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЬреЛ рдХреЛрдб рдХреЗ рдЕрдиреБрд░рдХреНрд╖рдг рдХреЛ рдХрдард┐рди рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдкрд░реНрдпрд╛рдкреНрдд рдПрдХреНрд╕реЗрд╕ рдореЗрдердбреНрд╕ (getters/setters) рди рджреЗрдирд╛, рдЬрд┐рд╕рд╕реЗ рдХреЛрдб рдирд╛рдЬреБрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдбреЗрд╡рд▓рдкрд░ рдпрд╣ рднреВрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ Python рдореЗрдВ рдПрдиреНрдХреИрдкреНрд╕реБрд▓реЗрд╢рди рдПрдХ рдкрд░рдВрдкрд░рд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдмрд╛рдИрдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдПрдиреНрдХреИрдкреНрд╕реБрд▓реЗрд╢рди рдХреЛрдб рд╕реБрд░рдХреНрд╖рд╛ рдореЗрдВ рдХреИрд╕реЗ рд╕реБрдзрд╛рд░ рдХрд░ рд╕рдХрддреА рд╣реИ?

рдПрдиреНрдХреИрдкреНрд╕реБрд▓реЗрд╢рди рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдЖрдВрддрд░рд┐рдХ рд╕реНрдерд┐рддрд┐ рддрдХ рдкрд╣реБрдБрдЪ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рдХреЗ рдФрд░ рдЕрдирдзрд┐рдХреГрдд рд╕рдВрд╢реЛрдзрдиреЛрдВ рдХреЛ рд░реЛрдХрдХрд░ рдХреЛрдб рд╕реБрд░рдХреНрд╖рд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░ рд╕рдХрддреА рд╣реИред рдпрд╣ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдХреЗ рдХрд┐ рдбреЗрдЯрд╛ рдХреИрд╕реЗ рдПрдХреНрд╕реЗрд╕ рдФрд░ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдбреЗрд╡рд▓рдкрд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдбреЗрдЯрд╛ рдорд╛рдиреНрдп рдФрд░ рд╕реБрд╕рдВрдЧрдд рдмрдирд╛ рд░рд╣реЗред

Python рдореЗрдВ @property рдбреЗрдХреЛрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдкрд░рдлрд╝реЙрд░реНрдореЗрдВрд╕ рдХреЛ рдХреИрд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ?

┬а@property рдбреЗрдХреЛрд░реЗрдЯрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдореЗрдердб рдХреЙрд▓реНрд╕ рдХреЗ рдХрд╛рд░рдг рдереЛрдбрд╝реА рдУрд╡рд░рд╣реЗрдб рд▓рд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдзрд┐рдХрд╛рдВрд╢ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЗрд╕рдХрд╛ рдкреНрд░рднрд╛рд╡ рдирдЧрдгреНрдп рд╣реЛрддрд╛ рд╣реИред рдмреЗрд╣рддрд░ рдкрдардиреАрдпрддрд╛ рдФрд░ рдЕрдиреБрд░рдХреНрд╖рдг рдХреЗ рд▓рд╛рдн рдЕрдХреНрд╕рд░ рдЗрд╕ рд╣рд▓реНрдХреА рдкрд░рдлрд╝реЙрд░реНрдореЗрдВрд╕ рд▓рд╛рдЧрдд рд╕реЗ рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реЛрддреЗ рд╣реИрдВред

рдХреНрдпрд╛ Python рдореЗрдВ Java рдпрд╛ C++ рдХреА рддрд░рд╣ рдПрдиреНрдХреИрдкреНрд╕реБрд▓реЗрд╢рди рдХреЛ рд╕рдЦреНрддреА рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ?

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

Python рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдореЗрдВ рдПрдиреНрдХреИрдкреНрд╕реБрд▓реЗрд╢рди рдХреЗ рдХреБрдЫ рд╡рд╛рд╕реНрддрд╡рд┐рдХ-world рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреНрдпрд╛ рд╣реИрдВ?

рдПрдиреНрдХреИрдкреНрд╕реБрд▓реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдбреЗрдЯрд╛ рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдмреИрдВрдХрд┐рдВрдЧ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдореЗрдВ, рдЬрд╣рд╛рдБ рдЦрд╛рддреЗ рдХрд╛ рд╡рд┐рд╡рд░рдг рдЫрд┐рдкрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд▓рд╛рдЗрдмреНрд░реЗрд░реАрдЬрд╝ рдФрд░ рдлрд╝реНрд░реЗрдорд╡рд░реНрдХреНрд╕ рдореЗрдВ рднреА рдЬрдЯрд┐рд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рд╡рд░рдгреЛрдВ рдХреЛ рдЫрд┐рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рд╣реЛрддрд╛ рд╣реИ, рддрд╛рдХрд┐ рдбреЗрд╡рд▓рдкрд░ рд╕рд░рд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХреЗрдВред

рдореИрдВ Python рдореЗрдВ рдПрдиреНрдХреИрдкреНрд╕реБрд▓реЗрдЯреЗрдб рдХреЛрдб рдХрд╛ рдкреНрд░рднрд╛рд╡реА рдкрд░реАрдХреНрд╖рдг рдХреИрд╕реЗ рдХрд░ рд╕рдХрддрд╛/рд╕рдХрддреА рд╣реВрдБ?

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

рдХреНрдпрд╛ рдПрдиреНрдХреИрдкреНрд╕реБрд▓реЗрд╢рди Python рдореЙрдбреНрдпреВрд▓реНрд╕ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдпрд╛ рдпрд╣ рдХреЗрд╡рд▓ рдХрдХреНрд╖рд╛рдУрдВ рддрдХ рд╕реАрдорд┐рдд рд╣реИ?

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

Python рдореЗрдВ рдПрдиреНрдХреИрдкреНрд╕реБрд▓реЗрд╢рди рдХрд╛ рдкреЙрд▓рд┐рдореЙрд░реНрдлрд╝рд┐рдЬрд╝реНрдо рд╕реЗ рдХреНрдпрд╛ рд╕рдВрдмрдВрдз рд╣реИ?

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

Bexruz (Bex) Tuychiev

рд▓реЗрдЦрдХ

Bexruz (Bex) Tuychiev

рдореИрдВ 2 рд╕реЗ рдЕрдзрд┐рдХ рд╡рд░реНрд╖реЛрдВ рдХреЗ рдЕрдиреБрднрд╡ рд╡рд╛рд▓рд╛ рдбреЗрдЯрд╛ рд╕рд╛рдЗрдВрд╕ рдХрдВрдЯреЗрдВрдЯ рдХреНрд░рд┐рдПрдЯрд░ рд╣реВрдБ рдФрд░ Medium рдкрд░ рд╕рдмрд╕реЗ рдмрдбрд╝реЗ рдлреЙрд▓реЛрдЗрдВрдЧреНрд╕ рдореЗрдВ рд╕реЗ рдПрдХ рд░рдЦрддрд╛ рд╣реВрдБред рдореБрдЭреЗ рдПрдЖрдИ рдФрд░ рдПрдордПрд▓ рдкрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд▓реЗрдЦ рд▓рд┐рдЦрдирд╛ рдкрд╕рдВрдж рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╣рд▓реНрдХрд╛-рд╕рд╛ рд╡реНрдпрдВрдЧреНрдпрд╛рддреНрдордХ рдЕрдВрджрд╛рдЬ рд░рд╣рддрд╛ рд╣реИтАФрдХреНрдпреЛрдВрдХрд┐ рдХреБрдЫ рддреЛ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ рддрд╛рдХрд┐ рд╡реЗ рдХрдо рдЙрдмрд╛рдК рд▓рдЧреЗрдВред рдореИрдВрдиреЗ 130 рд╕реЗ рдЕрдзрд┐рдХ рд▓реЗрдЦ рдФрд░ рдПрдХ DataCamp рдХреЛрд░реНрд╕ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рд╣реИ, рдФрд░ рдПрдХ рдФрд░ рдмрди рд░рд╣рд╛ рд╣реИред рдореЗрд░рд╛ рдХрдВрдЯреЗрдВрдЯ 50 рд▓рд╛рдЦ рд╕реЗ рдЕрдзрд┐рдХ рд▓реЛрдЧреЛрдВ рдиреЗ рджреЗрдЦрд╛ рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ 20 рд╣рдЬрд╝рд╛рд░ рд▓реЛрдЧ Medium рдФрд░ LinkedIn рдкрд░ рдлреЙрд▓реЛрдЕрд░реНрд╕ рдмрди рдЧрдПред┬а

рд╡рд┐рд╖рдп