π ΠΠ°ΠΊ ΡΠ΄Π΅Π»Π°ΡΡ ΠΈΠ½ΠΊΠ°ΠΏΡΡΠ»ΡΡΠΈΡ Π² Python: Π»Π΅Π³ΠΊΠΈΠΉ ΡΠ°Π³-Π·Π°-ΡΠ°Π³ΠΎΠΌ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ π
ΠΠ°ΠΊ ΡΠ΄Π΅Π»Π°ΡΡ ΠΈΠ½ΠΊΠ°ΠΏΡΡΠ»ΡΡΠΈΡ Π² ΠΏΠΈΡΠΎΠ½Π΅
ΠΠ½ΠΊΠ°ΠΏΡΡΠ»ΡΡΠΈΡ - ΡΡΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΡΠΈΠ½ΡΠΈΠΏΠΎΠ² ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΊΡΡΡΡ Π²Π½ΡΡΡΠ΅Π½Π½ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΊΠ»Π°ΡΡΠ° ΠΎΡ Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ Π΄ΠΎΡΡΡΠΏΠ°. Π Python ΠΈΠ½ΠΊΠ°ΠΏΡΡΠ»ΡΡΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΡΡΠΈΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΎΠ² Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π°ΡΡΠΈΠ±ΡΡΠ°ΠΌ ΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌ ΠΊΠ»Π°ΡΡΠ°.
ΠΡΡΡ Π΄Π²Π° ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΡΠΏΠΎΡΠΎΠ±Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΈΠ½ΠΊΠ°ΠΏΡΡΠ»ΡΡΠΈΠΈ:
1. Π‘ΠΎΠΊΡΡΡΠΈΠ΅ Π°ΡΡΠΈΠ±ΡΡΠΎΠ² ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π΄Π²ΠΎΠΉΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π½ΠΈΡ
class MyClass:
def __init__(self):
self.__private_attribute = "Private attribute"
self.__private_method()
def __private_method(self):
print("Private method")
obj = MyClass()
print(obj.__private_attribute) # ΠΡΠΈΠ±ΠΊΠ°: AttributeError
obj.__private_method() # ΠΡΠΈΠ±ΠΊΠ°: AttributeError
Π Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π°ΡΡΠΈΠ±ΡΡ __private_attribute
ΠΈ ΠΌΠ΅ΡΠΎΠ΄ __private_method
ΡΠ²Π»ΡΡΡΡΡ ΠΏΡΠΈΠ²Π°ΡΠ½ΡΠΌΠΈ (private) ΠΈ Π΄ΠΎΡΡΡΠΏΠ½Ρ ΡΠΎΠ»ΡΠΊΠΎ Π²Π½ΡΡΡΠΈ ΠΊΠ»Π°ΡΡΠ°. ΠΡΠ»ΠΈ ΠΏΠΎΠΏΡΡΠ°ΡΡΡΡ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΡΠΈΠΌ Π°ΡΡΠΈΠ±ΡΡΠ°ΠΌ ΠΈΠ»ΠΈ Π²ΡΠ·Π²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄ ΠΈΠ·Π²Π½Π΅ ΠΊΠ»Π°ΡΡΠ°, Π±ΡΠ΄Π΅Ρ Π²ΡΠ±ΡΠΎΡΠ΅Π½ΠΎ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅.
2. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΠΉ ΠΎ ΡΠΎΠΊΡΡΡΠΈΠΈ
class MyClass:
def __init__(self):
self._protected_attribute = "Protected attribute"
self._protected_method()
def _protected_method(self):
print("Protected method")
obj = MyClass()
print(obj._protected_attribute) # ΠΠΎΡΡΡΠΏ ΠΊ Π°ΡΡΠΈΠ±ΡΡΡ
obj._protected_method() # ΠΡΠ·ΠΎΠ² ΠΌΠ΅ΡΠΎΠ΄Π°
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π°ΡΡΠΈΠ±ΡΡ _protected_attribute
ΠΈ ΠΌΠ΅ΡΠΎΠ΄ _protected_method
ΡΡΠΈΡΠ°ΡΡΡΡ "Π·Π°ΡΠΈΡΠ΅Π½Π½ΡΠΌΠΈ" (protected), Π½ΠΎ Π΄ΠΎΡΡΡΠΏ ΠΊ Π½ΠΈΠΌ Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ ΠΈΠ·Π²Π½Π΅ ΠΊΠ»Π°ΡΡΠ°. Π‘ΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΠ΅ ΠΎ ΡΠΎΠΊΡΡΡΠΈΠΈ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅Ρ, ΡΡΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΈ Π°ΡΡΠΈΠ±ΡΡΡ ΠΈΠ»ΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ Π±Π΅Π· Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ, Π½ΠΎ ΡΡΠΎ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΡΠΎΠ³ΠΈΠΌ ΠΏΡΠ°Π²ΠΈΠ»ΠΎΠΌ.
ΠΠ΅ΡΠ°Π»ΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ
ΠΠ°ΠΊ ΡΠ΄Π΅Π»Π°ΡΡ ΠΈΠ½ΠΊΠ°ΠΏΡΡΠ»ΡΡΠΈΡ Π² ΠΏΠΈΡΠΎΠ½Π΅
ΠΠ½ΠΊΠ°ΠΏΡΡΠ»ΡΡΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π²Π°ΠΆΠ½ΡΡ ΠΏΠΎΠ½ΡΡΠΈΠΉ Π² ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ. ΠΡΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ΅ ΠΈ ΡΠΊΡΡΡΡ ΠΈΡ ΠΎΡ ΠΏΡΡΠΌΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ° ΠΈΠ·Π²Π½Π΅. Π ΠΏΠΈΡΠΎΠ½Π΅ ΠΈΠ½ΠΊΠ°ΠΏΡΡΠ»ΡΡΠΈΡ Π΄ΠΎΡΡΠΈΠ³Π°Π΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° ΠΈ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΡ.
Π ΠΏΠΈΡΠΎΠ½Π΅ ΠΈΠ½ΠΊΠ°ΠΏΡΡΠ»ΡΡΠΈΡ Π΄ΠΎΡΡΠΈΠ³Π°Π΅ΡΡΡ ΠΏΡΡΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π΄Π²ΡΡ ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π½ΠΈΠΉ ΠΏΠ΅ΡΠ΅Π΄ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ Π°ΡΡΠΈΠ±ΡΡΠΎΠ² ΠΈΠ»ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ². ΠΡΠΎ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ "ΠΈΠΌΠ΅Π½Π½ΠΎΠΉ ΠΌΠ°Π½Π³Π»ΠΈΠ½Π³". ΠΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π½ΠΈΡ Π² Π½Π°ΡΠ°Π»Π΅ ΠΈ ΠΊΠΎΠ½ΡΠ΅ ΠΈΠΌΠ΅Π½ΠΈ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ Π°ΡΡΠΈΠ±ΡΡ ΠΈΠ»ΠΈ ΠΌΠ΅ΡΠΎΠ΄ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΈΠ²Π°ΡΠ½ΡΠΌ ΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΠΈΠ·Π²Π½Π΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ°.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎΠ±Ρ Π»ΡΡΡΠ΅ ΠΏΠΎΠ½ΡΡΡ, ΠΊΠ°ΠΊ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ.
class MyClass:
def __init__(self):
self.__private_attr = 42
def __private_method(self):
return "ΠΡΠΎ ΠΏΡΠΈΠ²Π°ΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄"
def public_method(self):
return self.__private_attr * 2
obj = MyClass()
print(obj.public_method()) # ΠΡΠ²Π΅Π΄Π΅Ρ 84
print(obj.__private_attr) # ΠΡΠ·ΠΎΠ²Π΅Ρ ΠΎΡΠΈΠ±ΠΊΡ AttributeError
print(obj.__private_method()) # ΠΡΠ·ΠΎΠ²Π΅Ρ ΠΎΡΠΈΠ±ΠΊΡ AttributeError
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΊΠ»Π°ΡΡ MyClass Ρ ΠΏΡΠΈΠ²Π°ΡΠ½ΡΠΌ Π°ΡΡΠΈΠ±ΡΡΠΎΠΌ "__private_attr" ΠΈ ΠΏΡΠΈΠ²Π°ΡΠ½ΡΠΌ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ "__private_method". ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΌΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΡΠΈΠΌ ΠΏΡΠΈΠ²Π°ΡΠ½ΡΠΌ ΡΠ»Π΅Π½Π°ΠΌ ΠΊΠ»Π°ΡΡΠ° ΠΈΠ·Π²Π½Π΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ°. ΠΡΠ»ΠΈ Π±Ρ ΠΌΡ ΠΏΠΎΠΏΡΡΠ°Π»ΠΈΡΡ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ, ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ Π±Ρ ΠΎΡΠΈΠ±ΠΊΡ AttributeError.
ΠΠ΄Π½Π°ΠΊΠΎ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΏΡΠΈΠ²Π°ΡΠ½ΡΠΌ Π°ΡΡΠΈΠ±ΡΡΠ°ΠΌ ΠΈΠ»ΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌ Π²Π½ΡΡΡΠΈ ΠΊΠ»Π°ΡΡΠ°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΠΌΠ΅ΡΠΎΠ΄Π΅ "public_method" ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΈΠ²Π°ΡΠ½ΡΠΉ Π°ΡΡΠΈΠ±ΡΡ "__private_attr".
Π’Π°ΠΊΠΆΠ΅, ΠΈΠ½ΠΊΠ°ΠΏΡΡΠ»ΡΡΠΈΡ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΡΠΎΠ³ΠΎΠΉ Π² ΠΏΠΈΡΠΎΠ½Π΅. ΠΡΠ»ΠΈ ΠΌΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Ρ ΠΎΡΠΈΠΌ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΏΡΠΈΠ²Π°ΡΠ½ΡΠΌ ΡΠ»Π΅Π½Π°ΠΌ ΠΊΠ»Π°ΡΡΠ°, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ.
ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΡΡΠΈΠΉ ΡΡΠΎ:
class MyClass:
def __init__(self):
self.__private_attr = 42
def __private_method(self):
return "ΠΡΠΎ ΠΏΡΠΈΠ²Π°ΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄"
def public_method(self):
return self.__private_attr * 2
obj = MyClass()
print(obj.public_method()) # ΠΡΠ²Π΅Π΄Π΅Ρ 84
print(obj._MyClass__private_attr) # ΠΡΠ²Π΅Π΄Π΅Ρ 42
print(obj._MyClass__private_method()) # ΠΡΠ²Π΅Π΄Π΅Ρ "ΠΡΠΎ ΠΏΡΠΈΠ²Π°ΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄"
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΏΡΠΈΠ²Π°ΡΠ½ΡΠΌ Π°ΡΡΠΈΠ±ΡΡΠ°ΠΌ ΠΈΠ»ΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌ ΠΏΡΡΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΈΠΌΠ΅Π½ΠΈ ΠΊΠ»Π°ΡΡΠ° ΠΈ ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π½ΠΈΡ. Π₯ΠΎΡΡ ΡΡΠΎ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ Π΄Π΅Π»Π°ΡΡ ΡΡΠΎ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΡΠΎ Π½Π°ΡΡΡΠ°Π΅Ρ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ ΠΈΠ½ΠΊΠ°ΠΏΡΡΠ»ΡΡΠΈΠΈ ΠΈ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌ Π² ΠΊΠΎΠ΄Π΅.
Π Π·Π°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅, ΠΈΠ½ΠΊΠ°ΠΏΡΡΠ»ΡΡΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ Π²Π°ΠΆΠ½ΡΠΌ ΠΏΠΎΠ½ΡΡΠΈΠ΅ΠΌ Π² ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΎΡ ΠΏΡΡΠΌΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ° ΠΈΠ·Π²Π½Π΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ°. Π ΠΏΠΈΡΠΎΠ½Π΅ ΠΈΠ½ΠΊΠ°ΠΏΡΡΠ»ΡΡΠΈΡ Π΄ΠΎΡΡΠΈΠ³Π°Π΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π΄Π²ΠΎΠΉΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Π΄ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ Π°ΡΡΠΈΠ±ΡΡΠΎΠ² ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ². Π₯ΠΎΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΏΡΠΈΠ²Π°ΡΠ½ΡΠΌ ΡΠ»Π΅Π½Π°ΠΌ ΠΊΠ»Π°ΡΡΠ°, ΡΡΠΎ Π½Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΡΠΎ Π½Π°ΡΡΡΠ°Π΅Ρ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ ΠΈΠ½ΠΊΠ°ΠΏΡΡΠ»ΡΡΠΈΠΈ ΠΈ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌ.