Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² Python?

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с языком ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования, Ρ‚Π°ΠΊΠΈΠΌ ΠΊΠ°ΠΊ Python, инкапсуляция Π² Python являСтся ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· 4 Π²Π°ΠΆΠ½Ρ‹Ρ… ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ. ΠžΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Ρ‚Ρ€ΠΈ β€” это наслСдованиС, ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ ΠΈ абстракция.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² Python?

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с классами ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ прСдоставлСниС глобального доступа ΠΊΠΎ всСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, Π½Π΅ являСтся Π»ΡƒΡ‡ΡˆΠΈΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ. Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡ Π² Python Π΄Π°Π΅Ρ‚ Π½Π°ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ, Π½Π΅ прСдоставляя ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½Ρ‹ΠΉ доступ ΠΊ любой ΠΈΠ· этих ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ….

ОбновлСниС, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ для этой Ρ†Π΅Π»ΠΈ. ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²ΠΎ использования этого ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ β€” ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π½Π°Π΄ Π²Ρ…ΠΎΠ΄Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½Π½Π°Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ.

ΠšΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡ инкапсуляции ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Π° для всСх ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… языков программирования. Π Π°Π·Π½ΠΈΡ†Π° Π²ΠΈΠ΄Π½Π°, ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΠΊ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌ языкам.

По ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Ρ‚Π°ΠΊΠΈΠΌΠΈ языками, ΠΊΠ°ΠΊ Java, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‚ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ доступа (общСдоступныС ΠΈΠ»ΠΈ частныС) для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², Python прСдоставляСт доступ ΠΊΠΎ всСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ.

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π½ΠΈΠΆΠ΅ ΠΊΠΎΠ΄ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρƒ нас Π½Π΅Ρ‚ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² доступа Π² Python, ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ нСсколько Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² для управлСния доступом ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅.

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ контроля доступа

Python ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ нСсколько ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² для ограничСния доступа ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ рассмотрим ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹.

ИспользованиС ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½ΠΎΠ³ΠΎ подчСркивания

РаспространСнноС соглашСниС программирования Python для ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ частной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ β€” это прСфикс с ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ это Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ значСния для компилятора. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ доступна Π² ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅. Но ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ это соглашСниС, принятоС программистами, ΠΎΠ½ΠΎ сообщаСт Π΄Ρ€ΡƒΠ³ΠΈΠΌ программистам, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… класса.

ΠŸΠΎΠ½ΡΡ‚Π½ΠΎ, Ρ‡Ρ‚ΠΎ доступ ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ Π½Π΅ измСнился. Но ΠΌΠΎΠΆΠ΅ΠΌ Π»ΠΈ ΠΌΡ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ это Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹ΠΌ? ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ дальшС.

ИспользованиС Π΄Π²ΠΎΠΉΠ½ΠΎΠ³ΠΎ подчСркивания

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‡Π»Π΅Π½Ρ‹ класса, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, частными, Π²Π°ΠΌ слСдуСт ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄ Π½ΠΈΠΌΠΈ Π΄Π²ΠΎΠΉΠ½ΠΎΠ΅ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠΈΠ²Π°Π½ΠΈΠ΅. Но Python ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° private. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ называСтся ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΈΠΌΠ΅Π½ΠΈ. ΠŸΡ€ΠΈ этом ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Ρ‡Π»Π΅Π½Π°ΠΌ класса ΠΈΠ·Π²Π½Π΅.

Имя Mangling

Π’ Python любой ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ с __Var пСрСписываСтся ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠΌ python ΠΊΠ°ΠΊ _Classname__Var, Π° имя класса остаСтся ΠΊΠ°ΠΊ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ имя класса. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ измСнСния ΠΈΠΌΠ΅Π½ называСтся ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΈΠΌΠ΅Π½.

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π² Class person пСрСмСнная age ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π°, ΠΈ Π΅ΠΉ ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ символы подчСркивания Π² Π½Π°Ρ‡Π°Π»Π΅.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‡Π°ΡΡ‚ΡŒΡŽ класса. Но Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΈΠ·Π²Π½Π΅, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ это частная пСрСмСнная.

ИспользованиС ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Getter ΠΈ Setter

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ частныС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ доступа getter ΠΈ setter, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‡Π°ΡΡ‚ΡŒΡŽ Class.

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π°

Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ обСспСчиваСт Π»ΡƒΡ‡ΡˆΠΈΠΉ ΠΏΠΎΡ‚ΠΎΠΊ Π΄Π°Π½Π½Ρ‹Ρ…, Π½ΠΎ ΠΈ Π·Π°Ρ‰ΠΈΡ‰Π°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΡ‚ Π²Π½Π΅ΡˆΠ½ΠΈΡ… источников. ΠšΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡ инкапсуляции Π΄Π΅Π»Π°Π΅Ρ‚ ΠΊΠΎΠ΄ самодостаточным.

Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΊΡ€Ρ‹Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π² Π±Π»ΠΎΠΊΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡŽ, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π·Π°Ρ‰ΠΈΡ‚ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅.

Π—Π°Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ½Π° инкапсуляция?

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚, ΠΏΠΎΡ‡Π΅ΠΌΡƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ находят ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡŽ ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΉ ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ориСнтированная концСпция прСвосходит ΠΌΠ½ΠΎΠ³ΠΈΠ΅ языки программирования.

Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡ Π² Python Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ скрыты Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ опрСдСлСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Π­Ρ‚ΠΎ позволяСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ интСрфСйс. Π­Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π·Π°Ρ‰ΠΈΡ‚ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΡ‚ Π²Π·Π»ΠΎΠΌΠΎΠ², Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ Π½Π°Π΄Π΅ΠΆΠ½ΠΎ Π·Π°Ρ‰ΠΈΡ‰Π΅Π½ ΠΈ нСдоступСн для Π²Π½Π΅ΡˆΠ½ΠΈΡ… источников.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π‘ΠΎΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ Π² Python

Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡ – это ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… Π² Π΅Π΄ΠΈΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚. Π‘ΠΎΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ – это ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ Π²Π½Π΅ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ области. Π­Ρ‚ΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·Π½Ρ‹Π΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹, хотя ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎ Π½ΠΈΡ… говорят ΠΊΠ°ΠΊ ΠΎΠ± ΠΎΠ΄Π½ΠΎΠΌ: ΠΌΡ‹ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΡƒΠΏΠ°ΠΊΠΎΠ²Π°Π»ΠΈ Π² класс, Π° ΠΏΠΎΡ‚ΠΎΠΌ сокрыли ΠΎΡ‚ Π½Π΅ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ доступа ΠΈΠ·-Π²Π½Π΅. ΠœΠΎΠΆΠ΅Ρ‚Π΅ ΠΊΠΎΠ·Ρ‹Ρ€Π½ΡƒΡ‚ΡŒ Π³Π΄Π΅-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π½Π° собСсСдовании.

Π‘ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΡ‚ доступа ΠΈΠ·-Π²Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ смысл, ΠΊΠΎΠ³Π΄Π° Π² вашСм классС Π΅ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ использования, ΠΈ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π·Π°Ρ‰ΠΈΡ‚ΠΈΡ‚ΡŒ ΠΎΡ‚ ΠΈΡ… измСнСния (Π±ΡƒΠ΄ΡŒ-Ρ‚ΠΎ случайного ΠΈΠ»ΠΈ ΠΏΡ€Π΅Π΄Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π½ΠΎΠ³ΠΎ) ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΈΡ… участков ΠΊΠΎΠ΄Π°.

Π’ Python ΠΌΡ‹ Π²Ρ€ΠΎΠ΄Π΅ Π±Ρ‹ довСряСм Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Ρƒ, ΠΈ всС Ρ‡Π»Π΅Π½Ρ‹ класса ΠΏΠΎ-ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ доступны ΠΈΠ·-Π²Π½Π΅. ΠžΡΡ‚Π°Π΅Ρ‚ΡΡ лишь соглашСниС ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΡ‚ΠΎ-Ρ‚ΠΎ ΠΈΡ… Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Ρ€ΠΎΠ³Π°Ρ‚ΡŒ Π±Π΅Π· нСобходимости.

Никаких Π²Π°ΠΌ private/protected.

Π›Π°Π΄Π½ΠΎ, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈΡΡŒ, Ρ‡Ρ‚ΠΎ Ссли добавляСм ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠΈΠ²Π°Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅Π΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‚ΠΎ ΠΎΠ½Π° становится ΠΊΠ°ΠΊ-Π±Ρ‹ ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½ΠΎΠΉ, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΎΠ³ΠΎ использования классом. «Как-Π±Ρ‹Β» ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π²Ρ‹ запросто ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΌΠ΅Π½ΡΡ‚ΡŒ Π΅Π΅.

ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π³Ρ€ΠΎΠ·ΠΈΡ‚ – Π½Π΅Π΄ΠΎΠ²ΠΎΠ»ΡŒΡΡ‚Π²ΠΎ со стороны вашСй IDE ΠΈ ΠΊΠΎΠ»Π»Π΅Π³ Π½Π° code-review.Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅Π”Π°Π²Π°ΠΉΡ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π΄Π²Π° Π·Π½Π°ΠΊΠ° подчСркивания ΠΏΠ΅Ρ€Π΅Π΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ. Π‘ΡƒΠ΄Π΅ΠΌ Π±ΠΎΠ»Π΅Π΅ ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ. ΠœΠΎΠΆΠ΅Ρ‚, это Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€-ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½ΠΎ, Π½ΠΎ этот Ρ‚Ρ€ΡŽΠΊ сработаСт. Π’Π°ΠΊΠΎΠΉ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ останСтся Π²ΠΈΠ΄ΠΈΠΌ Π²Π½ΡƒΡ‚Ρ€ΠΈ опрСдСлСния класса, Π½ΠΎ ΠΊΠ°ΠΊ-Π±Ρ‹ Β«ΠΏΡ€ΠΎΠΏΠ°Π΄Π΅Ρ‚Β» ΠΈΠ· видимости снаруТи класса:

ΠŸΠΎΠΏΡ‹Ρ‚Π°Π»ΠΈΡΡŒ ΠΎΠ±ΠΌΠ°Π½ΡƒΡ‚ΡŒ, Π΄Π°ΠΆΠ΅ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Ρ‚Π°ΠΌ присвоили, Π½ΠΎ Π½Π΅ нанСсли ΡƒΡ€ΠΎΠ½Π° классу! Но я знаю колдунство посильнСС:

Python Π½Π΅ смог ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΡΠΏΡ€ΡΡ‚Π°Ρ‚ΡŒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚.

Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ это Ρ‚Π°ΠΊ: Ссли имя Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° начинаСтся с Π΄Π²ΡƒΡ… ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠΈΠ²Π°Π½ΠΈΠΉ, Ρ‚ΠΎ Python автоматичСски ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΡƒΠ΅Ρ‚ Π΅Π³ΠΎ ΠΏΠΎ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ _ИмяКласса__Π˜ΠΌΡΠΡ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°. Но! Π’Π½ΡƒΡ‚Ρ€ΠΈ класса ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ доступСн ΠΏΠΎ старому ΠΈΠΌΠ΅Π½ΠΈ: __Π˜ΠΌΡΠΡ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°.

Π­Ρ‚Π° смСшная ΠΈΠ³Ρ€Π° Π² прятки Π² Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ смысл. ΠžΡ‚ Π·Π»ΠΎΠ½Π°ΠΌΠ΅Ρ€Π΅Π½Π½ΠΎΠ³ΠΎ измСнСния ΠΌΡ‹ Π½Π΅ смоТСм Π·Π°Ρ‰ΠΈΡ‚ΠΈΡ‚ΡŒΡΡ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π° ΠΎΡ‚ случайного – Π΄Π°. Π’ΠΎΠΎΠ±Ρ€Π°Π·ΠΈΠΌ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ с наслСдованиСм:

Π’ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠΌ классС ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈ Π½Π΅ Π·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² нашСм Π±Π°Π·ΠΎΠ²ΠΎΠΌ Π΅ΡΡ‚ΡŒ пСрСмСнная с Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ, Π½ΠΎ ΠΏΡ€ΠΈ совпадСнии – ΠΌΡ‹ Π½Π΅ Π½Π°Ρ€ΡƒΡˆΠΈΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π²Π½ΡƒΡ‚Ρ€ΠΈ это Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ с ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ _Base__x ΠΈ _Derived__x.

Π’ΠΎΡ‚ ΠΆΠ΅ эффСкт Π±ΡƒΠ΄Π΅Ρ‚ ΠΈ с ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ, ΠΈ с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ класса (Π° Π½Π΅ экзСмпляра).

__setattr__

Π’ ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΠΌΡ‹ ΡƒΠΌΡƒΠ΄Ρ€ΠΈΠ»ΠΈΡΡŒ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ классу Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π½Π΅ Π±Ρ‹Π»ΠΎ Π² Π½Π΅ΠΌ. Если Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½Π΅ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ магичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ __setattr__, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠΉ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈ ΠΊΠΈΠ΄Π°Ρ‚ΡŒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, Ссли ΠΊΡ‚ΠΎ-Ρ‚ΠΎ Ρ…ΠΎΡ‡Π΅Ρ‚ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² класс Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΠΌ Ρƒ сСбя Π²ΠΈΠ΄Π΅Ρ‚ΡŒ.

Но сразу скаТу, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Ρ‚Π°ΠΊΡƒΡŽ Π·Π°Ρ‰ΠΈΡ‚Ρƒ Π½ΠΈΠΊΡ‚ΠΎ Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ‚. Π”Π°Π²Π°ΠΉΡ‚Π΅ Π±Π΅Π· фанатизма…

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ экспорта ΠΈΠ· ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ

Π•Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ сокрытия – сокрытиС сущностСй (классов, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ Ρ‚. ΠΏ.) Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ΠΎΡ‚ Π±Π΅Π·Π΄ΡƒΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°.

НапишСм ΠΌΠΎΠ΄ΡƒΠ»ΡŒ. Π’ΠΎ Π΅ΡΡ‚ΡŒ создаСм ΠΏΠ°ΠΏΠΊΡƒ с ΠΈΠΌΠ΅Π½Π΅ΠΌ testpack, Ρ‚ΡƒΠ΄Π° ΠΊΠ»Π°Π΄Π΅ΠΌ Ρ„Π°ΠΉΠ» __init__.py

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅ΠŸΠΈΡˆΠ΅ΠΌ ΠΊΠΎΠ΄ Π² __init__.py:

Π”Π°Π»Π΅Π΅ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ (ΠΈΠ· основной Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ) ΠΌΡ‹ попытаСмся ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ (всС – *) ΠΈΠ· модуля testpack.

Имя foo Π±Ρ‹Π»ΠΎ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΌΡ‹ упомянули Π΅Π³ΠΎ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ __all__, Π° bar – Π½Π΅Ρ‚. Π­Ρ‚Π° всС Ρ‚Π° ΠΆΠ΅ Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ Π΄ΡƒΡ€Π°ΠΊΠ°, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Ссли ΠΌΡ‹ Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π½ΠΎ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ bar – Π½ΠΈ ошибок, Π½ΠΈ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΉ Π½Π΅ послСдуСт.

Π•Ρ‰Π΅ ΠΎΠ΄Π½ΠΎ Π·Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Ссли имя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ (класса, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ) начинаСтся с подчСркивания, Ρ‚ΠΎ ΠΎΠ½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ ΠΏΡ€ΠΈ import *, Π΄Π°ΠΆΠ΅ Ссли ΠΌΡ‹ Π½Π΅ примСняСм __all__. И ΠΊΠ°ΠΊ всСгда, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π Π΅ΠΆΠΈΠΌΡ‹ доступа, Π³Π΅Ρ‚Ρ‚Π΅Ρ€Ρ‹ ΠΈ сСттСры

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Π½Π°ΡƒΡ‡ΠΈΠ»ΠΈΡΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ экзСмпляры классов ΠΈ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ Π² Π½ΠΈΡ… Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΏΡ€ΠΈΡˆΠ»Π° ΠΏΠΎΡ€Π° Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π²Π°ΠΆΠ½ΡƒΡŽ Ρ‚Π΅ΠΌΡƒ ограничСния доступа ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ класса ΠΈΠ·Π²Π½Π΅. Π­Ρ‚ΠΎ основа ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° инкапсуляции. Π’Π°ΠΊΠΆΠ΅ здСсь посмотрим ΠΊΠ°ΠΊ происходит ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ (ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹ΠΌ) свойствам Ρ‡Π΅Ρ€Π΅Π· ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹: Π³Π΅Ρ‚Ρ‚Π΅Ρ€Ρ‹ ΠΈ сСттСры. И, Π·Π°Ρ‚Π΅ΠΌ, ΡƒΠΆΠ΅ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… занятиях Ρ€Π°Π·ΠΎΠ²ΡŒΠ΅ΠΌ этот ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΈ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ создании ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²-свойств (property) класса ΠΈ дСскрипторах. ЀактичСски, это ΠΎΠ΄Π½Π° большая ΠΈ Сдиная Ρ‚Π΅ΠΌΠ°. Для простоты восприятия я Ρ€Π°Π·ΠΎΠ±ΡŒΡŽ Π΅Π΅ Π½Π° нСсколько занятий. Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ разбСрСмся с основами Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ класса, Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ занятиС Π±ΡƒΠ΄Π΅Ρ‚ СстСствСнным ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ΠΌ этой Ρ‚Π΅ΠΌΡ‹.

Π˜Ρ‚Π°ΠΊ, Π½Π°Ρ‡Π½Π΅ΠΌ с Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ° инкапсуляции Π² Python. Π”Π°Π²Π°ΠΉΡ‚Π΅ вСрнСмся ΠΊ Π½Π°ΡˆΠ΅ΠΌΡƒ классу прСдставлСния Ρ‚ΠΎΡ‡ΠΊΠΈ Π½Π° плоскости:

Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ создаСм экзСмпляр этого класса:

Ρ‚ΠΎ ΠΌΡ‹ ΠΈΠΌΠ΅Π΅ΠΌ ΠΏΠΎΠ»Π½Ρ‹ΠΉ доступ ΠΊΠΎ всСм Π΅Π³ΠΎ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ:

Π°, Π·Π½Π°Ρ‡ΠΈΡ‚, ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈΡ… Π²Π½Π΅ этого класса:

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, Π½ΠΈΡ‡Π΅Π³ΠΎ слоТного Π½Π΅Ρ‚. Пока ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Π΅ свойства (public) ΠΈΠ»ΠΈ Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ (private). О Ρ€Π΅ΠΆΠΈΠΌΠ΅ protected ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ, ΠΊΠΎΠ³Π΄Π° Π±ΡƒΠ΄Π΅ΠΌ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ наслСдованиС классов.

Π˜Ρ‚Π°ΠΊ, создадим Π² ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π΅ Π΄Π²Π° ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹Ρ… Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°:

ΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΊ этим ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ ΡƒΠΆΠ΅ Π½Π΅ получится, ΠΎΠ½ΠΈ стали Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌΠΈ (ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹ΠΌΠΈ):

ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ экзСмпляра класса.

Но ΠΊΠ°ΠΊ ΠΌΡ‹ Ρ‚ΠΎΠ³Π΄Π° смоТСм ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ свойства? Для этого Π² классах ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ с прСфикса set (Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π·Π°Π΄Π°Ρ‚ΡŒ, ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ) ΠΈ Π΄Π°Π»Π΅Π΅, ΠΊΠ°ΠΊΠΎΠ΅-Π»ΠΈΠ±ΠΎ имя, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚Π°ΠΊ:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ этот ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π½ΡƒΠΆΠ½Ρ‹Π΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ для ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹Ρ… Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ²:

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…, Π΄Π°Π²Π°ΠΉΡ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΠΌΠ΅Ρ‚ΠΎΠ΄, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ прСфикс get (ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ):

И, Π΄Π°Π»Π΅Π΅, Π²Ρ‹Π·ΠΎΠ²Π΅ΠΌ Π΅Π³ΠΎ:

Π’Π°ΠΊΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π² ООП Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ сСттСрами ΠΈ Π³Π΅Ρ‚Ρ‚Π΅Ρ€Π°ΠΌΠΈ. Π˜Ρ… Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ значСния ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹ΠΌΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌΠΈ класса, Π½ΠΎ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ ΠΈΡ… ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒ. НапримСр, Π² нашСм случаС ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ числами. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, слСдуСт ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΈΡ… Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…. Для этого ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ isinstance ΠΈ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ сСттСр ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π²ΠΎΡ‚ Π½Π° этот слСш. Он ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ Π² языкС Python Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² нСсколько строчСк. Он, Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Ρƒ языка, Ρ‡Ρ‚ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ строчка – это ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π²ΠΎΠΉ. Π˜Ρ‚Π°ΠΊ, здСсь ΠΌΡ‹ провСряСм, Ρ‡Ρ‚ΠΎ ΠΎΠ±Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ x ΠΈ y Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ‚ΠΈΠΏ int ΠΈΠ»ΠΈ float ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послС этого ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹ΠΌ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌ экзСмпляра класса Π±ΡƒΠ΄ΡƒΡ‚ присвоСны эти значСния. Π˜Π½Π°Ρ‡Π΅, выводится сообщСниС, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ числами. Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ ΠΊΠ°ΠΊ это Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ:

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, всС Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΈ Ρ…ΠΎΡ‚Π΅Π»ΠΈ.

ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ наш класс Point. Π’ΠΎΡ‚ Ρ‚Π°ΠΊΠΈΠ΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ коррСктности Π΄Π°Π½Π½Ρ‹Ρ…, часто Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ Π² Π²ΠΈΠ΄Π΅ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ доступны Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ класса, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ, ΠΈΡ… Π΄Π΅Π»Π°ΡŽΡ‚ ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹ΠΌΠΈ (Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌΠΈ). ΠŸΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ приватная пСрСмСнная – двумя подчСркиваниями, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚Π°ΠΊ:

ΠœΡ‹ здСсь объявили ΠΌΠ΅Ρ‚ΠΎΠ΄ Π±Π΅Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° self, Ρ‚.ΠΊ. Π΅ΠΌΡƒ Π½Π΅ Π½ΡƒΠΆΠ΅Π½ доступ ΠΊ экзСмпляру класса ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ нСпосрСдствСнно Ρ‡Π΅Ρ€Π΅Π· класс:

ЗапускаСм ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΈ Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ всС Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚Π°ΠΊΠΆΠ΅. Но, ΠΏΡ€ΠΈ этом, доступа ΠΊ этому ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ ΠΈΠ·Π²Π½Π΅ Π½Π΅Ρ‚, ΠΎΠ½ ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹ΠΉ.

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΏΡ€ΠΈ большом ΠΆΠ΅Π»Π°Π½ΠΈΠΈ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΈ ΠΊ Ρ‚Π°ΠΊΠΈΠΌ свойствам ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ класса ΠΈΠ·Π²Π½Π΅. Π’ Python ΠΎΠ½ΠΈ ΡˆΠΈΡ„Ρ€ΡƒΡŽΡ‚ΡΡ ΠΏΠΎ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ:

_Имя класса__имя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ
_Имя класса__имя ΠΌΠ΅Ρ‚ΠΎΠ΄Π°

НапримСр, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ __x, Ρ‚Π°ΠΊ:

ΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠ½Π° Ρ€Π°Π²Π½Π° 100. Или, Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ скрытый ΠΌΠ΅Ρ‚ΠΎΠ΄:

Однако, Π±Π΅Π· ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ нСобходимости Ρ‚Π°ΠΊ Π΄Π΅Π»Π°Ρ‚ΡŒ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΈ Π΄Π²ΠΎΠΉΠ½ΠΎΠ΅ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠΈΠ²Π°Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠΈΠ³Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ программисту, Ρ‡Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Ρ‚Π°ΠΊΠΈΠΌ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠΌ Π½ΡƒΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π΅Ρ€Π΅Π· сСттСры ΠΈ Π³Π΅Ρ‚Ρ‚Π΅Ρ€Ρ‹. Π˜Π½Π°Ρ‡Π΅, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ Π½Π΅ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄Π΅Π½Π½Ρ‹Π΅ ошибки.

НапримСр, ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄:

ΠΌΡ‹ Π½Π΅ смоТСм ΠΈΠ·Π²Π½Π΅ ΡƒΠ·Π½Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ __x:

выдаст ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ для всСх ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… свойств ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ этот ΠΌΠ΅Ρ‚ΠΎΠ΄ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса, Π² Π΄Π°Π½Π½ΠΎΠΌ случаС – это класс object. Π˜Π½Π°Ρ‡Π΅, ΠΌΡ‹ Π½Π΅ смоТСм Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌΠΈ класса. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ класс ΠΌΡ‹ Π΅Ρ‰Π΅ Π±ΡƒΠ΄Π΅ΠΌ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ Π² Ρ‚Π΅ΠΌΠ΅ «НаслСдованиС». Пока просто Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅ этот ΠΌΠΎΠΌΠ΅Π½Ρ‚.

Π”Π°Π»Π΅Π΅, пСрСопрСдСляя ΠΌΠ΅Ρ‚ΠΎΠ΄:

ΠΌΡ‹ Π·Π°ΠΏΡ€Π΅Ρ‰Π°Π΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ свойство WIDTH нашСго класса. ΠŸΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ:

сработаСт ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ AttributeError. А ΠΈΠ½Π°Ρ‡Π΅, ΠΌΡ‹ Π² экзСмплярС класса мСняСм Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ свойства с ΠΈΠΌΠ΅Π½Π΅ΠΌ key Π½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ value. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ __setattr__ ΠΌΠ΅Π½ΡΡ‚ΡŒ свойства слСдуСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π΅Ρ€Π΅Π· ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ __dict__. Если Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ здСсь Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅:

Ρ‚ΠΎ Ρƒ нас ΠΌΠ΅Ρ‚ΠΎΠ΄ __setattr__ Π½Π°Ρ‡Π½Π΅Ρ‚ Ρ€Π΅ΠΊΡƒΡ€Ρ€Π΅Π½Ρ‚Π½ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ, ΠΏΠΎΠΊΠ° Π½Π΅ пСрСполнится стСк Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.

НаконСц, ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ __delattr__ ΠΈ __getattr__ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊ:

Π•Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π·Π° Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ свойствами экзСмпляров классов ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ:

ΠΈ ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹:

Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚ ошибка. И, ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Π² slots ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… свойств экзСмпляров, Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‚ΡƒΠ΄Π° ΠΈΠΌΠ΅Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… самого класса нСльзя. Π’ΠΎΡ‚ такая запись ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ошибкС:

На этом ΠΌΡ‹ Π·Π°Π²Π΅Ρ€ΡˆΠΈΠΌ ΠΏΠ΅Ρ€Π²ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ Ρ‚Π΅ΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌΠΈ класса. На ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ занятии ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌ ΠΈ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ создании ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²-свойств (property) ΠΈ довольно интСрСсном ΠΈ Π³ΠΈΠ±ΠΊΠΎΠΌ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ΅ – дСскрипторах.

Π’ΠΈΠ΄Π΅ΠΎ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅

#1: ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠ° ООП, классы, экзСмпляры классов, Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅

#2: ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса, ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ self, конструктор ΠΈ дСструктор

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅

#4: ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ свойства (property) ΠΈ дСскрипторы классов

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅

#5: статичСскиС свойства ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ классов, Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€ @staticmethod, созданиС синглСтона

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅

#6: простоС наслСдованиС классов, Ρ€Π΅ΠΆΠΈΠΌ доступа protected

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅

#7: ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², абстрактныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅

#8: мноТСствСнноС наслСдованиС, функция super

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅

#9: ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ²

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅

#10: собствСнныС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΈ ΠΈΡ‚Π΅Ρ€Π°Π±Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅

#11: Ρ„ΡƒΠ½ΠΊΡ‚ΠΎΡ€Ρ‹ ΠΈ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Ρ‹ контСкста

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅

#12: нСйронная ΡΠ΅Ρ‚ΡŒ (ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ)

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅

#14: ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ Π² ООП Π½Π° Python

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅

#15: ΠœΠΎΠ½ΠΎΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΠ΅ экзСмпляров класса

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅

#16: ΠœΠ°Π³ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ __str__, __repr__, __len__, __abs__

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅

#17: ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡ __slots__ для классов

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅

#18: Как Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ __slots__ с property ΠΈ ΠΏΡ€ΠΈ наслСдовании классов

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅

#19. Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅

#20. РаспространСниС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ (propagation exceptions)

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅

#21. Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ raise ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ

Β© 2021 ЧастичноС ΠΈΠ»ΠΈ ΠΏΠΎΠ»Π½ΠΎΠ΅ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ с Π΄Π°Π½Π½ΠΎΠ³ΠΎ сайта для распространСния Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… рСсурсах, Π² Ρ‚ΠΎΠΌ числС ΠΈ Π±ΡƒΠΌΠ°ΠΆΠ½Ρ‹Ρ…, строго Π·Π°ΠΏΡ€Π΅Ρ‰Π΅Π½ΠΎ. ВсС тСксты ΠΈ изобраТСния ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ сайта

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Python

ΠŸΠΎΠΏΡƒΠ»ΡΡ€Π½Ρ‹ΠΉ язык программирования Python Ρ‚Π°ΠΊΠΆΠ΅ слСдуСт ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования. ОбъявлСниС классов ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π² Python Π·Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°ΡŽΡ‚ основу ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΉ ООП.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² Python?

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² Python – это способ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠ³ΠΎ программирования, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠΉ идСю Β«ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²Β» для прСдставлСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ². Π­Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ для создания Π°ΠΊΠΊΡƒΡ€Π°Ρ‚Π½ΠΎΠ³ΠΎ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΡ€Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° вмСсто ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Ρ€Π°Π·Π±ΠΈΡ‚Π° Π½Π° Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈΠ»ΠΈ нСсколько ΠΌΠΈΠ½ΠΈ-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ прСдставляСт собой ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ прилоТСния, ΠΈΠΌΠ΅ΡŽΡ‰ΡƒΡŽ ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ Π»ΠΎΠ³ΠΈΠΊΡƒ ΠΈ Π΄Π°Π½Π½Ρ‹Π΅ для взаимодСйствия Π²Π½ΡƒΡ‚Ρ€ΠΈ сСбя.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ ООП?

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ ООП (ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования) Π² Python Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ класс, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΌΠ΅Ρ‚ΠΎΠ΄, наслСдованиС, ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ, Π°Π±ΡΡ‚Ρ€Π°ΠΊΡ†ΠΈΡŽ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡŽ.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ классы ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹?

Класс – это Π½Π°Π±ΠΎΡ€ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈΠ»ΠΈ ΠΏΠ»Π°Π½ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΡ… ΠΎΠ±Ρ‰ΠΈΠ΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅. Π’ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ вопрос, ΠΊΠ°ΠΊ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ?

Π§Ρ‚ΠΎ ΠΆ, ΠΎΠ½ логичСски Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΡƒΠ΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ использованиС ΠΊΠΎΠ΄Π° становится простым. Π― ΠΌΠΎΠ³Ρƒ привСсти Π²Π°ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ· Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ ΠΆΠΈΠ·Π½ΠΈ – ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ офис становится «сотрудником» ΠΊΠ°ΠΊ класс ΠΈ всС Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹, связанныС с Π½ΠΈΠΌ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Β«emp_nameΒ», Β«emp_ageΒ», Β«emp_salaryΒ», Β«emp_idΒ» ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π² Python. Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния кодирования, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ экзСмпляр класса ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

Класс опрСдСляСтся ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ словом «Класс». ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. Python Π½Π΅ чувствитСлСн ΠΊ рСгистру.

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ – это экзСмпляр класса, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π΅ΡΡ‚ΡŒ состояниС ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅. Π’ Π΄Π²ΡƒΡ… словах, это экзСмпляр класса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ.

Бинтаксис: obj = class1()

Π—Π΄Π΅ΡΡŒ, obj – это Β«ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Β» class1.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈ класса

ОбъяснСниС: ’emp1β€² ΠΈ ’emp2β€² – это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, экзСмпляры ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ для класса ’employee’. Π—Π΄Π΅ΡΡŒ слово (__dict__) – это Β«ΡΠ»ΠΎΠ²Π°Ρ€ΡŒΒ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚ всС значСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ’emp1β€² для Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ( имя, возраст, Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Π°). (__ init__) дСйствуСт ΠΊΠ°ΠΊ конструктор, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ вызываСтся всякий Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° создаСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚.

Π― надСюсь, Ρ‡Ρ‚ΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹, рСбята, Π½Π΅ ΡΡ‚ΠΎΠ»ΠΊΠ½Π΅Ρ‚Π΅ΡΡŒ с ΠΊΠ°ΠΊΠΈΠΌΠΈ-Π»ΠΈΠ±ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с «классами» ΠΈ Β«ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈΒ» Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ.

ΠœΠ΅Ρ‚ΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования

Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ разбСрСмся с ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠ΅ΠΉ наслСдования.

НаслСдованиС

Π’Ρ‹ ΠΊΠΎΠ³Π΄Π°-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΡΠ»Ρ‹ΡˆΠ°Π»ΠΈ ΠΎΠ± этом Π΄ΠΈΠ°Π»ΠΎΠ³Π΅ ΠΎΡ‚ родствСнников: Β«Π’Ρ‹ выглядитС Π² точности ΠΊΠ°ΠΊ ΠΎΡ‚Π΅Ρ† ΠΈΠ»ΠΈ ΠΌΠ°Ρ‚ΡŒΒ», ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° этого называСтся «наслСдство». Π‘ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния программирования это ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ «наслСдованиС ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ характСристик ΠΎΡ‚ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ ΠΊ Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅ΠΌΡƒ классу Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉΒ». Новый класс называСтся ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΌ ΠΈΠ»ΠΈ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΌ классом, Π° Ρ‚ΠΎΡ‚, ΠΎΡ‚ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΎΠ½ являСтся ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΌ, называСтся Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ ΠΈΠ»ΠΈ Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ классом.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ инкапсуляция Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅

РазбСрСмся ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ с ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· ΠΏΠΎΠ΄Ρ‚Π΅ΠΌ.

ΠžΠ΄ΠΈΠ½ΠΎΡ‡Π½ΠΎΠ΅ наслСдованиС

ΠžΠ΄Π½ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅ наслСдованиС позволяСт ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠΌΡƒ классу Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ характСристики ΠΎΡ‚ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса.

ΠœΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅ наслСдованиС

ΠœΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅ наслСдованиС позволяСт ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠΌΡƒ классу Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ свойства ΠΎΡ‚ нСпосрСдствСнного Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, наслСдуСт свойства ΠΎΡ‚ своСго Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса.

Π˜Π΅Ρ€Π°Ρ€Ρ…ΠΈΡ‡Π΅ΡΠΊΠΎΠ΅ наслСдованиС

НаслСдованиС Π½Π° иСрархичСском ΡƒΡ€ΠΎΠ²Π½Π΅ позволяСт Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠΌΡƒ классу Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ свойства Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса.

ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²Π΅Π½Π½ΠΎΠ΅ наслСдованиС

ΠœΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅ наслСдованиС позволяСт ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠΌΡƒ классу Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ свойства Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса.

ОбъяснСниС: Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ я взял Π΄Π²Π° Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΡ… класса Β«employee1Β» ΠΈ Β«employee2Β». И Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ класс Β«childemployeeΒ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ наслСдуСт ΠΎΠ±Π° Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΡ… класса, создавая экзСмпляры ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² emp1 ΠΈ emp2 ΠΏΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ классы.

Π Π΅Ρ‡ΡŒ шла ΠΎ наслСдовании, ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ³Π°ΡΡΡŒ Π²ΠΏΠ΅Ρ€Π΅Π΄ Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Python, Π΄Π°Π²Π°ΠΉΡ‚Π΅ углубимся Π² Β«ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΒ».

ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ

Π’Ρ‹ всС Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ GPS для Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ ΠΏΠΎ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Ρƒ. Π Π°Π·Π²Π΅ Π½Π΅ ΡƒΠ΄ΠΈΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, сколько Ρ€Π°Π·Π½Ρ‹Ρ… ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΎΠ² Π²Ρ‹ встрСчаСтС для ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ ΠΏΡƒΠ½ΠΊΡ‚Π° назначСния Π² зависимости ΠΎΡ‚ Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ°, с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния программирования это называСтся Β«ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠΎΠΌΒ». Π­Ρ‚ΠΎ ΠΎΠ΄Π½Π° ΠΈΠ· Ρ‚Π°ΠΊΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΠΉ ООП, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ΄Π½Ρƒ Π·Π°Π΄Π°Ρ‡Ρƒ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ нСсколькими способами. ΠŸΡ€ΠΎΡ‰Π΅ говоря, это свойство ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ позволяСт Π΅ΠΌΡƒ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ нСсколько Ρ„ΠΎΡ€ΠΌ.

ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ компиляции

ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ компиляции, Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ статичСским ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠΎΠΌ, Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ Π²ΠΎ врСмя компиляции ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Один ΠΈΠ· распространСнных ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² – Β«ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Β». ΠŸΠΎΠ·Π²ΠΎΠ»ΡŒΡ‚Π΅ ΠΌΠ½Π΅ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ Π²Π°ΠΌ быстрый ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅.

Π•Π³ΠΎ Π·ΠΎΠ²ΡƒΡ‚ Π₯Π°Ρ€ΡˆΠΈΡ‚, 3000 – Π΅Π³ΠΎ Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Π°, 22 – Π΅Π³ΠΎ возраст; Π΅Π³ΠΎ Π·ΠΎΠ²ΡƒΡ‚ Π Π°Ρ…ΡƒΠ», 4000 – Π΅Π³ΠΎ Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Π°, 23 – Π΅Π³ΠΎ возраст.

ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния

ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния Ρ‚Π°ΠΊΠΆΠ΅ называСтся динамичСским ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠΎΠΌ, Π³Π΄Π΅ ΠΎΠ½ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ Π²ΠΎ врСмя выполнСния. Одним ΠΈΠ· распространСнных ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠ° Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния являСтся Β«ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Β». ΠŸΠΎΠ·Π²ΠΎΠ»ΡŒΡ‚Π΅ ΠΌΠ½Π΅ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ Π²Π°ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ для Π»ΡƒΡ‡ΡˆΠ΅Π³ΠΎ понимания.

Π’Ρ‹Ρ…ΠΎΠ΄: Π΄Π΅Π½Π΅Π³ Π½Π΅Ρ‚, дСньги Π΅ΡΡ‚ΡŒ.

ОбъяснСниС: Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ я создал Π΄Π²Π° класса childemployee1 ΠΈ childemployee2, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΌΠΈ ΠΎΡ‚ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса employee. Один Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» Π΄Π΅Π½Π΅Π³, Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ». Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π³Π»Π°Π²Π½Ρ‹ΠΉ вопрос: ΠΊΠ°ΠΊ это ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ? Π˜Ρ‚Π°ΠΊ, Ссли Π²Ρ‹ ΠΏΡ€ΠΈΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ΡΡŒ, я создал ΠΏΡƒΡΡ‚ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈ использовал Pass (ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΊΠ°ΠΊΡƒΡŽ-Π»ΠΈΠ±ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ΠΈΠ»ΠΈ ΠΊΠΎΠ΄). Π’Π΅ΠΏΠ΅Ρ€ΡŒ, Π² Π΄Π²ΡƒΡ… ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Ρ… классах, я использовал ΠΎΠ΄Π½Ρƒ ΠΈ Ρ‚Ρƒ ΠΆΠ΅ ΠΏΡƒΡΡ‚ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈ использовал ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ, ΠΊΠ°ΠΊ Β«Π½Π΅Ρ‚ Π΄Π΅Π½Π΅Π³Β» ΠΈ Β«Π΅ΡΡ‚ΡŒ дСньги». НаконСц, создал Π΄Π²Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈ Π²Ρ‹Π·Π²Π°Π» Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ.

ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Ρ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования Python, я расскаТу ΠΎΠ± инкапсуляции.

Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡ

Π’ Π½Π΅ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅ инкапсуляция ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ связываниС Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΎΠ΄Π½ΠΎΠΌ классС. Π’ Python, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Java, Π½Π΅Ρ‚ Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… слов. Доступ ΠΊ классу Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒΡΡ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ, ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ прСфикс Π² Π²ΠΈΠ΄Π΅ подчСркивания.

ОбъяснСниС: Π’Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ этот вопрос, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠΈΠ²Π°Π½ΠΈΠ΅ ΠΈ ошибка? Класс python ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ частныС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΊΠ°ΠΊ (__ salary), ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ нСльзя ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ.

Π˜Ρ‚Π°ΠΊ, Π² ΠΌΠΎΠ΅ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ я использовал ΠΌΠ΅Ρ‚ΠΎΠ΄ установки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ обСспСчиваСт косвСнный доступ ΠΊ Π½ΠΈΠΌ.

Π’Ρ‹Π²ΠΎΠ΄: Π—Π°Ρ€Π°Π±ΠΎΡ‚ΠΎΠΊ: 1000000, Π·Π°Ρ€Π°Π±ΠΎΡ‚ΠΎΠΊ: 1000000, Π·Π°Ρ€Π°Π±ΠΎΡ‚ΠΎΠΊ: 10000.

ОбъяснСниС: ИспользованиС ΠΌΠ΅Ρ‚ΠΎΠ΄Π° установки обСспСчиваСт косвСнный доступ ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ частного класса. Π—Π΄Π΅ΡΡŒ я ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ» класс сотрудника ΠΈ использовал (__maxearn), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдставляСт собой ΠΌΠ΅Ρ‚ΠΎΠ΄ установки, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ здСсь для хранСния максимального Π·Π°Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° сотрудника, ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ установки setmaxearn(), которая ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Ρ†Π΅Π½Ρƒ Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°.

Π­Ρ‚ΠΎ наглядный ΠΏΡ€ΠΈΠΌΠ΅Ρ€ инкапсуляции, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅ΠΌ доступ ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ частного класса, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ установки для прСдоставлСния доступа.

Π”Π°Π»Π΅Π΅ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования Python рассказываСтся ΠΎΠ± ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΉ, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠΉ абстракциСй.

Абстракция

НСвозмоТно ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ экзСмпляр абстрактного класса, Ρ‡Ρ‚ΠΎ просто ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ для этого Ρ‚ΠΈΠΏΠ° класса. Π•Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для наслСдования Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… возмоТностСй.

Π’Ρ‹Π²ΠΎΠ΄: emp_id – 12345.

ОбъяснСниС: Как Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, ΠΌΡ‹ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ абстрактный ΠΌΠ΅Ρ‚ΠΎΠ΄, Π° ΠΎΡΡ‚Π°Π»ΡŒΠ½Π°Ρ Ρ‡Π°ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΉ классы. БоздаСтся экзСмпляр ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° для Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса childemployee, ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ возмоТности абстрактного.

Python Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ спСцификаторов доступа, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ «частный», ΠΊΠ°ΠΊ Π² java. Он ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ², связанных с Β«ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΒ» языком программирования, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ строгой инкапсуляции. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΎΠ½ Π½Π΅ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *