Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅. ΠšΠ»Π°ΡΡΡ‹ ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹

БСгодня ΠΌΡ‹ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎΠ± ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΈ ΠΎ Π΅Π³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π² python.

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ (ООП) β€” ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠ° программирования, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ основными концСпциями ΡΠ²Π»ΡΡŽΡ‚ΡΡ понятия ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ классов.

Класс β€” Ρ‚ΠΈΠΏ, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠΉ устройство ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². ΠžΠ±ΡŠΠ΅ΠΊΡ‚ β€” это экзСмпляр класса. Класс ΠΌΠΎΠΆΠ½ΠΎ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ с Ρ‡Π΅Ρ€Ρ‚Π΅ΠΆΠΎΠΌ, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹.

Python соотвСтствуСт ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ°ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования. Π’ python всё являСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ — ΠΈ строки, ΠΈ списки, ΠΈ словари, ΠΈ всё ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅.

Но возмоТности ООП Π² python этим Π½Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Ρ‹. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ свой Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… (класс), ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π² Π½Ρ‘ΠΌ свои ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹.

Π­Ρ‚ΠΎ Π½Π΅ являСтся ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ — ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ встроСнными ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ. Однако ООП ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΏΡ€ΠΈ долгосрочной Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ нСсколькими людьми, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°.

ΠŸΡ€ΠΈΡΡ‚ΡƒΠΏΠΈΠΌ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ собствСнно ΠΊ написанию своих классов Π½Π° python.

ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ собствСнный класс:

>>> # ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅Π³ΠΎ класса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ‚
... class A:
...     pass

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ нСсколько экзСмпляров этого класса:

>>> a = A()
>>> b = A()
>>> a.arg = 1  # Ρƒ экзСмпляра a появился Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ arg, Ρ€Π°Π²Π½Ρ‹ΠΉ 1
>>> b.arg = 2  # Π° Ρƒ экзСмпляра b - Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ arg, Ρ€Π°Π²Π½Ρ‹ΠΉ 2
>>> print(a.arg)
1
>>> print(b.arg)
2
>>> c = A()
>>> print(c.arg)  # Π° Ρƒ этого экзСмпляра Π½Π΅Ρ‚ arg
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'A' object has no attribute 'arg'

ΠšΠ»Π°ΡΡΡƒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ собствСнныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹:

>>> class A:
...     def g(self): # self - ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚, содСрТащий Π² сСбС экзСмпляр
...                  # класса, ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‰ΠΈΠΉΡΡ ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°,
...                  # поэтому этот Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ
...                  # Π²ΠΎ всСх ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ… класса. 
...         return 'hello world'
...
>>> a = A()
>>> a.g()
'hello world'

И напослСдок Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

>>> class B:
...     arg = 'Python' # ВсС экзСмпляры этого класса Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ arg,
...                    # Ρ€Π°Π²Π½Ρ‹ΠΉ "Python"
...                    # Но впослСдствии ΠΌΡ‹ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ
...     def g(self):
...         return self.arg
...
>>> b = B()
>>> b.g()
'Python'
>>> B.g(b)
'Python'
>>> b.arg = 'spam'
>>> b.g()
'spam'

Для вставки ΠΊΠΎΠ΄Π° Π½Π° Python Π² ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Π·Π°ΠΊΠ»ΡŽΡ‡Π°ΠΉΡ‚Π΅ Π΅Π³ΠΎ Π² Ρ‚Π΅Π³ΠΈ <pre><code>Π’Π°Ρˆ ΠΊΠΎΠ΄</code></pre>

Π‘Π²Π΅ΠΆΠ΅Π΅

  • ΠœΠΎΠ΄ΡƒΠ»ΡŒ csv — Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΈ запись CSV Ρ„Π°ΠΉΠ»ΠΎΠ²
  • Π‘ΠΎΠ·Π΄Π°Ρ‘ΠΌ сайт Π½Π° Django, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠ΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ. Π§Π°ΡΡ‚ΡŒ 1: создаём ΠΏΡ€ΠΎΠ΅ΠΊΡ‚
  • Онлайн-ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ Python: сравнСниС популярных ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ

ΠšΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ

  • Книги ΠΎ Python
  • GUI (графичСский интСрфСйс ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ)
  • ΠšΡƒΡ€ΡΡ‹ Python
  • ΠœΠΎΠ΄ΡƒΠ»ΠΈ
  • Новости ΠΌΠΈΡ€Π° Python
  • NumPy
  • ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ…
  • ΠžΡΠ½ΠΎΠ²Ρ‹ программирования
  • ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ
  • Π’ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π² Python
  • Π’ΠΈΠ΄Π΅ΠΎ
  • Python для Web
  • Π Π°Π±ΠΎΡ‚Π° для Python-программистов

ΠŸΠΎΠ»Π΅Π·Π½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹

  • Π‘Π΄Π΅Π»Π°ΠΉ свой Π²ΠΊΠ»Π°Π΄ Π² Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ сайта!
  • Π‘Π°ΠΌΠΎΡƒΡ‡ΠΈΡ‚Π΅Π»ΡŒ Python
  • ΠšΠ°Ρ€Ρ‚Π° сайта
  • ΠžΡ‚Π·Ρ‹Π²Ρ‹ Π½Π° ΠΊΠ½ΠΈΠ³ΠΈ ΠΏΠΎ Python
  • Π Π΅ΠΊΠ»Π°ΠΌΠ° Π½Π° сайтС

ΠœΡ‹ Π² соцсСтях

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

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ познакомимся с ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования (ООП) ΠΈ Π΅Π³ΠΎ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ°ΠΌΠΈ.

ООП

Python β€” ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ язык программирования. Он ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ€Π°Π·Π½Ρ‹Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹ ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ.

Один ΠΈΠ· популярных ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ² ΠΊ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡŽ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ β€” созданиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Π­Ρ‚ΠΎ называСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ (ООП).Β 

Π£ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π΅ΡΡ‚ΡŒ Π΄Π²Π΅ характСристики:Β 

  • Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹;
  • ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅.

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€. Допустим, наш ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ β€” это ΠΏΠΎΠΏΡƒΠ³Π°ΠΉ. Π£ попугая Π΅ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ свойства:

  • Имя, возраст, Ρ†Π²Π΅Ρ‚. Π­Ρ‚ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹.
  • Π’ΠΎ, ΠΊΠ°ΠΊ ΠΏΠΎΠΏΡƒΠ³Π°ΠΉ ΠΏΠΎΠ΅Ρ‚ ΠΈ Ρ‚Π°Π½Ρ†ΡƒΠ΅Ρ‚. Π­Ρ‚ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅.Β 

ООП ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ. Π’Π°ΠΊΠΎΠΉ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ называСтся DRY (don’t repeat yourself, Β«Π½Π΅ повторяйся»).

Класс

Класс β€” это шаблон ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

ВСрнСмся ΠΊ Π½Π°ΡˆΠ΅ΠΌΡƒ ΠΏΠΎΠΏΡƒΠ³Π°ΡŽ. Если ΠΌΡ‹ схСматично нарисуСм Π΅Π³ΠΎ Π½Π° Π±ΡƒΠΌΠ°Π³Π΅, Ρ‚Π°ΠΊΠΎΠΉ набросок Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ²Π»ΡΡ‚ΡŒΡΡ классом. По Π½Π΅ΠΌΡƒ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡ΡƒΡ‡Π΅Π»ΠΎ попугая.Β 

Π”Π°Π²Π°ΠΉΡ‚Π΅ создадим класс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ описываСт попугая:Β 

class Parrot:
    pass

Для объявлСния класса Parrot ΠΌΡ‹ использовали ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово class. Из классов ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ экзСмпляры, созданныС ΠΏΠΎ подобию этого класса.

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

ΠžΠ±ΡŠΠ΅ΠΊΡ‚ β€” это экзСмпляр класса. ΠžΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹ΠΉ класс β€” это лишь описаниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°: Π΅ΠΌΡƒ Π½Π΅ выдСляСтся ΠΏΠ°ΠΌΡΡ‚ΡŒ.Β 

НапримСр, экзСмпляра класса Parrot Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ:

# obj β€” экзСмпляр класса Parrot
obj = Parrot()

Π’Π΅ΠΏΠ΅Ρ€ΡŒ разбСрСмся, ΠΊΠ°ΠΊ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ класс ΠΈ Π΅Π³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹.

# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ класс ΠΈ Π΅Π³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹
class Parrot:

    # Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ класса
    species = "ΠΏΡ‚ΠΈΡ†Π°"

    # Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ экзСмпляра
    def __init__(self, name, age):
        self.name = name
        self.age = age

# создаСм экзСмпляра класса
kesha = Parrot("КСша", 10)
cookie = Parrot("ΠšΡƒΠΊΠΈ", 15)

# ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ доступ ΠΊ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌ класса
print("КСша β€” {}".format(kesha.__class__.species))
print("ΠšΡƒΠΊΠΈ Ρ‚ΠΎΠΆΠ΅ {}".format(cookie.__class__.species))

# ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ доступ ΠΊ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌ экзСмпляра
print("{} β€” {}-Π»Π΅Ρ‚Π½ΠΈΠΉ ΠΏΠΎΠΏΡƒΠ³Π°ΠΉ".
format(kesha.name, kesha.age)) print("{} β€” {} Π»Π΅Ρ‚Π½ΠΈΠΉ ΠΏΠΎΠΏΡƒΠ³Π°ΠΉ".format(cookie.name, cookie.age))

Π’Ρ‹Π²ΠΎΠ΄:

КСша β€” ΠΏΡ‚ΠΈΡ†Π°
ΠšΡƒΠΊΠΈ Ρ‚ΠΎΠΆΠ΅ ΠΏΡ‚ΠΈΡ†Π°
КСша β€” 10-Π»Π΅Ρ‚Π½ΠΈΠΉ ΠΏΠΎΠΏΡƒΠ³Π°ΠΉ ΠšΡƒΠΊΠΈ β€” 15-Π»Π΅Ρ‚Π½ΠΈΠΉ ΠΏΠΎΠΏΡƒΠ³Π°ΠΉ

ΠœΡ‹ создали класс Parrot. ПослС этого ΠΌΡ‹ объявили Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ β€” характСристики ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

Атрибуты ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹ Π²Π½ΡƒΡ‚Ρ€ΠΈ класса β€” Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ __init__. Π­Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄-ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ запускаСтся сразу ΠΆΠ΅ послС создания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.Β 

ПослС этого ΠΌΡ‹ создаСм экзСмпляры класса Parrot. kesha ΠΈ cookie β€” ссылки Π½Π° (значСния) наши Π½ΠΎΠ²Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹.Β 

ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρƒ класса ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊ β€” __class__.species

. Атрибуты класса для всСх экзСмпляров класса ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹. Π’ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌ экзСмпляра β€” kesha.name ΠΈ kesha.age. Но Π²ΠΎΡ‚ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ экзСмпляра класса ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹.Β 

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎ классах ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°Ρ….

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹Β β€” Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Π΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Π΅Π»Π° класса. Они ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ повСдСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄
class Parrot:
    
    # Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ экзСмпляра
    def __init__(self, name, age):
        self.name = name
        self.age = age
    
    # ΠΌΠ΅Ρ‚ΠΎΠ΄ экзСмпляра
    def sing(self, song):
        return "{} ΠΏΠΎΠ΅Ρ‚ {}".format(self.name, song)

    def dance(self):
        return "{} Ρ‚Π°Π½Ρ†ΡƒΠ΅Ρ‚".format(self.name)

# создаСм экзСмпляр класса
kesha = Parrot("КСша", 10)

# Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ экзСмпляра
print(kesha.sing("пСсСнки"))
print(kesha.dance())

Π’Ρ‹Π²ΠΎΠ΄:

КСша ΠΏΠΎΠ΅Ρ‚ пСсСнки
КСша Ρ‚Π°Π½Ρ†ΡƒΠ΅Ρ‚

Π’ этой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΌΡ‹ объявили Π΄Π²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π°: sing() ΠΈ dance(). Они ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ экзСмпляра, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, kesha.Β 

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

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

β€” способ создания класса. Π•Π³ΠΎ ΡΡƒΡ‚ΡŒ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π½ΠΎΠ²ΠΎΠ³ΠΎ класса Π½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ΡΡ ΠΎΡ‚ ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ класса. Новый класс называСтся ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΌ (Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΌ). Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ β€” Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ (Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ).

# Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ класс
class Bird:
    
    def __init__(self):
        print("ΠŸΡ‚ΠΈΡ†Π° Π³ΠΎΡ‚ΠΎΠ²Π°")

    def whoisThis(self):
        print("ΠŸΡ‚ΠΈΡ†Π°")

    def swim(self):
        print("ΠŸΠ»Ρ‹Π²Π΅Ρ‚ быстрСС")

# Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ класс
class Penguin(Bird):

    def __init__(self):
        # Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ super() 
        super().__init__()
        print("Пингвин Π³ΠΎΡ‚ΠΎΠ²")

    def whoisThis(self):
        print("Пингвин")

    def run(self):
        print("Π‘Π΅ΠΆΠΈΡ‚ быстрСС")

peggy = Penguin()
peggy.whoisThis()
peggy.swim()
peggy.run()

Π’Ρ‹Π²ΠΎΠ΄:

ΠŸΡ‚ΠΈΡ†Π° Π³ΠΎΡ‚ΠΎΠ²Π°
Пингвин Π³ΠΎΡ‚ΠΎΠ²
Пингвин
ΠŸΠ»Ρ‹Π²Π΅Ρ‚ быстрСС
Π‘Π΅ΠΆΠΈΡ‚ быстрСС

Π’ этой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΌΡ‹ создаСм Π΄Π²Π° класса β€” Bird (Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ) ΠΈ Penguin (Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ). Π”ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ класс наслСдуСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ. Π­Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ ΠΏΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ

swim().

Но ΠΈ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ класс измСняСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ ΠΏΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ whoisThis(). Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, ΠΌΡ‹ Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса β€” создаСм ΠΌΠ΅Ρ‚ΠΎΠ΄ run().

Π’Π°ΠΊΠΆΠ΅ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ super() Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° __init__(). Π­Ρ‚ΠΎ позволяСт Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ __init__() Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса Π²Π½ΡƒΡ‚Ρ€ΠΈ Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅Π³ΠΎ.

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

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ Π΄Π°Π½Π½Ρ‹Ρ… β€” это ΠΈ Π΅ΡΡ‚ΡŒ инкапсуляция. ΠŸΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ Π²Ρ‹Π΄Π΅Π»ΡΡŽΡ‚ΡΡ Π½ΠΈΠΆΠ½ΠΈΠΌ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ: ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΌ _ ΠΈΠ»ΠΈ Π΄Π²ΠΎΠΉΠ½Ρ‹ΠΌ __.Β 

# Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡŽ Π΄Π°Π½Π½Ρ‹Ρ…
class Computer:

    def __init__(self):
        self.__maxprice = 900

    def sell(self):
        print("Π¦Π΅Π½Π° ΠΏΡ€ΠΎΠ΄Π°ΠΆΠΈ: {}".format(self.__maxprice))

    def setMaxPrice(self, price):
        self. __maxprice = price

c = Computer()
c.sell()

# ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ†Π΅Π½Ρ‹
c.__maxprice = 1000
c.sell()

# ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ измСнСния Ρ†Π΅Π½Ρ‹
c.setMaxPrice(1000)
c.sell()

Β Π’Ρ‹Π²ΠΎΠ΄:

Π¦Π΅Π½Π° ΠΏΡ€ΠΎΠ΄Π°ΠΆΠΈ: 900
Π¦Π΅Π½Π° ΠΏΡ€ΠΎΠ΄Π°ΠΆΠΈ: 900
Π¦Π΅Π½Π° ΠΏΡ€ΠΎΠ΄Π°ΠΆΠΈ: 1000

ΠœΡ‹ объявили класс Computer.Β 

Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ использовали ΠΌΠ΅Ρ‚ΠΎΠ΄ __init__() для хранСния максимальной Ρ†Π΅Π½Ρ‹ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ ΠΏΠΎΠΏΡ‹Ρ‚Π°Π»ΠΈΡΡŒ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ†Π΅Π½Ρƒ β€” Π±Π΅Π·ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ: Python воспринимаСт __maxprice ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹ΠΉ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚.Β 

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, для измСнСния Ρ†Π΅Π½Ρ‹ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ β€” setMaxPrice(), которая ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Ρ†Π΅Π½Ρƒ Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°.

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

ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ β€” ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ ООП, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄Π½Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для Ρ€Π°Π·Π½Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌ (Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…).

Допустим, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΊΡ€Π°ΡΠΈΡ‚ΡŒ Ρ„ΠΈΠ³ΡƒΡ€Ρƒ. Π˜Ρ… Ρ„ΠΎΡ€ΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ любой: ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ, ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚, ΠΊΡ€ΡƒΠ³. Одним ΠΈ Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ€Π°ΡΠΊΡ€Π°ΡΠΈΡ‚ΡŒ Π»ΡŽΠ±ΡƒΡŽ Ρ„ΠΈΠ³ΡƒΡ€Ρƒ. Π’Π°ΠΊΠΎΠΉ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ ΠΈ называСтся ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠΎΠΌ.

# Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ
class Parrot:

    def fly(self):
        print("ΠŸΠΎΠΏΡƒΠ³Π°ΠΉ ΡƒΠΌΠ΅Π΅Ρ‚ Π»Π΅Ρ‚Π°Ρ‚ΡŒ")
    
    def swim(self):
        print("ΠŸΠΎΠΏΡƒΠ³Π°ΠΉ Π½Π΅ ΡƒΠΌΠ΅Π΅Ρ‚ ΠΏΠ»Π°Π²Π°Ρ‚ΡŒ")

class Penguin:

    def fly(self):
        print("Пингвин Π½Π΅ ΡƒΠΌΠ΅Π΅Ρ‚ Π»Π΅Ρ‚Π°Ρ‚ΡŒ")
    
    def swim(self):
        print("Пингвин ΡƒΠΌΠ΅Π΅Ρ‚ ΠΏΠ»Π°Π²Π°Ρ‚ΡŒ")

# ΠΎΠ±Ρ‰ΠΈΠΉ интСрфСйс 
def flying_test(bird):
    bird.fly()

# создаСм экзСмпляров класса
kesha = Parrot()
peggy = Penguin()

# ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°
flying_test(kesha)
flying_test(peggy)

Π’Ρ‹Π²ΠΎΠ΄:

ΠŸΠΎΠΏΡƒΠ³Π°ΠΉ ΡƒΠΌΠ΅Π΅Ρ‚ Π»Π΅Ρ‚Π°Ρ‚ΡŒ
Пингвин Π½Π΅ ΡƒΠΌΠ΅Π΅Ρ‚ Π»Π΅Ρ‚Π°Ρ‚ΡŒ

Π’ этой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΌΡ‹ объявили Π΄Π²Π° класса: Parrot ΠΈ Penguin. Π’ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ· Π½ΠΈΡ… описан ΠΎΠ±Ρ‰ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ fly(). Но Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρƒ Π½ΠΈΡ… Ρ€Π°Π·Π½Ρ‹Π΅. Β 

Для использованиС ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠ° ΠΌΡ‹ создали ΠΎΠ±Ρ‰ΠΈΠΉ интСрфСйс β€” Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ flying_test(). Π’ качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° ΠΎΠ½Π° ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ любой ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, послС Ρ‡Π΅Π³ΠΎ происходит Π²Ρ‹Π·ΠΎΠ² Π΅Π³ΠΎ собствСнного ΠΌΠ΅Ρ‚ΠΎΠ΄Π° fly().Β 

Π§Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ:

  • ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π΄Π΅Π»Π°Π΅Ρ‚ Π΅Π΅ эффСктивнСС.Β 
  • ВсС классы ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ±Ρ‰ΠΈΠΌΠΈ β€” ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ.Β 
  • ВсС Π΄Π°Π½Π½Ρ‹Π΅ находятся Π² сохранности ΠΈ Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Ρ‹ благодаря абстракции.
  • ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ прСдоставляСт ΠΎΠ±Ρ‰ΠΈΠΉ интСрфСйс Ρ€Π°Π·Π½Ρ‹ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΊΠΎΠ΄ эффСктивнСС.Β 

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

Π’ этом руководствС Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅ ΠΎΠ± ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ (ООП) Π² Python ΠΈ Π΅Π³ΠΎ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎΠΉ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ².

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

Python β€” ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ язык программирования. Он ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹ ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ.

Одним ΠΈΠ· популярных ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ² ΠΊ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡŽ Π·Π°Π΄Π°Ρ‡ΠΈ программирования являСтся созданиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Π­Ρ‚ΠΎ извСстно ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ (ООП).

ΠžΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π²Π΅ характСристики:

  • Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹
  • ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅

Π’ΠΎΠ·ΡŒΠΌΠ΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

ΠŸΠΎΠΏΡƒΠ³Π°ΠΉ являСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ свойства:

  • имя, возраст, Ρ†Π²Π΅Ρ‚ ΠΊΠ°ΠΊ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹
  • ΠΏΠ΅Π½ΠΈΠ΅, Ρ‚Π°Π½Ρ†Ρ‹ ΠΊΠ°ΠΊ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅

ΠšΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡ ООП Π² Python фокусируСтся Π½Π° создании ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. Π­Ρ‚Π° концСпция Ρ‚Π°ΠΊΠΆΠ΅ извСстна ΠΊΠ°ΠΊ DRY (Π½Π΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΠΉΡ‚Π΅ΡΡŒ).

Π’ Python концСпция ООП слСдуСт Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ основным ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ°ΠΌ:


Класс

Класс β€” это ΠΏΠ»Π°Π½ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎ классС ΠΊΠ°ΠΊ ΠΎ наброскС попугая с ярлыками. Он содСрТит всС подробности ΠΎΠ± ΠΈΠΌΠ΅Π½ΠΈ, Ρ†Π²Π΅Ρ‚Π°Ρ…, Ρ€Π°Π·ΠΌΠ΅Ρ€Π°Ρ… ΠΈ Ρ‚. Π΄. На основС этих описаний ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΎ ΠΏΠΎΠΏΡƒΠ³Π°Π΅. Π—Π΄Π΅ΡΡŒ ΠΏΠΎΠΏΡƒΠ³Π°ΠΉ β€” это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ класса ΠΏΠΎΠΏΡƒΠ³Π°Π΅Π²:

класс ΠŸΠΎΠΏΡƒΠ³Π°ΠΉ:
    pass 

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово class для опрСдСлСния пустого класса Parrot . Из класса ΠΌΡ‹ создаСм экзСмпляры. ЭкзСмпляр β€” это ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, созданный ΠΈΠ· ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ класса.


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

ΠžΠ±ΡŠΠ΅ΠΊΡ‚ (экзСмпляр) являСтся Π²ΠΎΠΏΠ»ΠΎΡ‰Π΅Π½ΠΈΠ΅ΠΌ класса. Когда класс ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½, опрСдСляСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ описаниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΈΠ»ΠΈ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π½Π΅ Π²Ρ‹Π΄Π΅Π»ΡΡŽΡ‚ΡΡ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° класса ΠΏΠΎΠΏΡƒΠ³Π°ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ:

obj = Parrot() 

Π—Π΄Π΅ΡΡŒ obj являСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ класса Parrot .

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρƒ нас Π΅ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ попугаях. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ собираСмся ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ класс ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΏΠΎΠΏΡƒΠ³Π°Π΅Π².

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 1: Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ класса ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π² Python

 class Parrot:
    # Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ класса
    Π²ΠΈΠ΄ = "ΠΏΡ‚ΠΈΡ†Π°"
    # Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ экзСмпляра
    def __init__(я, имя, возраст):
        self.name = имя
        возраст = возраст
# ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ экзСмпляр класса Parrot
синий = ΠΏΠΎΠΏΡƒΠ³Π°ΠΉ ("Π‘ΠΈΠ½ΠΈΠΉ", 10)
Π’Ρƒ = ΠŸΠΎΠΏΡƒΠ³Π°ΠΉ ("Π’Ρƒ", 15)
# доступ ΠΊ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌ класса
print("BluΒ β€” это {}".format(blu.__class__.species))
print("Woo Ρ‚Π°ΠΊΠΆΠ΅ {}". format(woo.__class__.species))
# доступ ΠΊ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌ экзСмпляра
print("{} {} Π»Π΅Ρ‚".format( blu.name, blu.age))
print("{} {} Π»Π΅Ρ‚".format( woo.name, woo.age)) 

Π’Ρ‹Ρ…ΠΎΠ΄

  Π“ΠΎΠ»ΡƒΠ±Ρ‡ΠΈΠΊ β€” ΠΏΡ‚ΠΈΡ†Π°
Π’Ρƒ Ρ‚ΠΎΠΆΠ΅ ΠΏΡ‚ΠΈΡ†Π°
Π‘Π»Ρƒ 10 Π»Π΅Ρ‚
Π’Ρƒ 15 Π»Π΅Ρ‚  

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΌΡ‹ создали класс с ΠΈΠΌΠ΅Π½Π΅ΠΌ Parrot . Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ опрСдСляСм Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹. Атрибуты ΡΠ²Π»ΡΡŽΡ‚ΡΡ характСристикой ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

Π­Ρ‚ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° __init__ класса. Π­Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ запускаСтся сразу послС создания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ создаСм экзСмпляры ΠŸΠΎΠΏΡƒΠ³Π°ΠΉ класс. Π—Π΄Π΅ΡΡŒ blu ΠΈ woo ΡΠ²Π»ΡΡŽΡ‚ΡΡ ссылками (Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ) Π½Π° наши Π½ΠΎΠ²Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹.

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρƒ класса, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ __class__.species . Атрибуты класса ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ для всСх экзСмпляров класса. Π’ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ доступ ΠΊ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌ экзСмпляра, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ blu.name ΠΈ blu. age . Однако Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ экзСмпляра Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ экзСмпляра класса.

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния ΠΎ классах ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°Ρ… см. Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠšΠ»Π°ΡΡΡ‹ ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Python 9.0003


ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ β€” это Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Π΅Π»Π° класса. Они ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для опрСдСлСния повСдСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2: Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π² Python

 class Parrot:
    
    # Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ экзСмпляра
    def __init__(я, имя, возраст):
        self.name = имя
        возраст = возраст
    
    # ΠΌΠ΅Ρ‚ΠΎΠ΄ экзСмпляра
    def ΠΏΠ΅Ρ‚ΡŒ (я, пСсня):
        return "{} ΠΏΠΎΠ΅Ρ‚ {}".format(self.name, пСсня)
    Π’Π°Π½Π΅Ρ† Π·Π°Ρ‰ΠΈΡ‚Ρ‹ (я):
        return "{} сСйчас Ρ‚Π°Π½Ρ†ΡƒΠ΅Ρ‚".format(self.name)
# ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ экзСмпляр ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°
синий = ΠΏΠΎΠΏΡƒΠ³Π°ΠΉ ("Π‘ΠΈΠ½ΠΈΠΉ", 10)
# Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ нашСго экзСмпляра
print(blu.sing("'Бчастливый'"))
ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ (blu.dance()) 

Π’Ρ‹Ρ…ΠΎΠ΄

  Π“ΠΎΠ»ΡƒΠ±Ρ‡ΠΈΠΊ ΠΏΠΎΠ΅Ρ‚ "Happy"
Blu Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρ‚Π°Π½Ρ†ΡƒΠ΅Ρ‚  

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΌΡ‹ опрСдСляСм Π΄Π²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π°: sing() ΠΈ dance() . Они Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ экзСмпляра, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° экзСмпляра, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ blu .


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

НаслСдованиС β€” это способ создания Π½ΠΎΠ²ΠΎΠ³ΠΎ класса для использования Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ класса Π±Π΅Π· Π΅Π³ΠΎ измСнСния. Π’Π½ΠΎΠ²ΡŒ сформированный класс являСтся ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΌ классом (ΠΈΠ»ΠΈ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΌ классом). Π’ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ класс являСтся Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ классом (ΠΈΠ»ΠΈ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ классом).

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 3. ИспользованиС наслСдования Π² Python

 # Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ класс
класс ΠŸΡ‚ΠΈΡ†Π°:
    
    Π·Π°Ρ‰ΠΈΡ‚Π° __init__(сам):
        print("ΠŸΡ‚ΠΈΡ‡ΠΊΠ° Π³ΠΎΡ‚ΠΎΠ²Π°")
    ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ whoisThis(я):
        ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ("ΠΏΡ‚ΠΈΡ†Π°")
    Π΄Π΅Ρ„ ΠΏΠ»Π°Π²Π°Ρ‚ΡŒ(я):
        print("ΠŸΠ»Ρ‹Π²ΠΈ быстрСС")
# Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ класс
класс Пингвин(ΠŸΡ‚ΠΈΡ†Π°):
    Π·Π°Ρ‰ΠΈΡ‚Π° __init__(сам):
        # Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ super()
        супСр().__ΠΈΠ½ΠΈΡ‚__()
        print("Пингвин Π³ΠΎΡ‚ΠΎΠ²")
    ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ whoisThis(я):
        ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ("Пингвин")
    Π΄Π΅Ρ„ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ (ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ):
        print("Π‘Π΅ΠΆΠ°Ρ‚ΡŒ быстрСС")
ΠΏΠ΅Π³Π³ΠΈ = ΠΏΠΈΠ½Π³Π²ΠΈΠ½()
ΠΏΠ΅Π³Π³ΠΈ. whoisThis()
ΠΏΠ΅Π³Π³ΠΈ.ΠΏΠ»Π°Π²Π°Ρ‚ΡŒ()
ΠΏΠ΅Π³Π³ΠΈ.run() 

Π’Ρ‹Ρ…ΠΎΠ΄

  ΠŸΡ‚ΠΈΡ†Π° Π³ΠΎΡ‚ΠΎΠ²Π°
Пингвин Π³ΠΎΡ‚ΠΎΠ²
Пингвин
ΠŸΠ»Ρ‹Π²ΠΈΡ‚Π΅ быстрСС
Π‘Π΅Π³ΠΈ быстрСС  

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΌΡ‹ создали Π΄Π²Π° класса: ΠŸΡ‚ΠΈΡ†Π° (Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ класс) ΠΈ Пингвин (Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ класс). Π”ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ класс наслСдуСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ это ΠΈΠ· ΠΌΠ΅Ρ‚ΠΎΠ΄Π° swim() .

ΠžΠΏΡΡ‚ΡŒ ΠΆΠ΅, Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ класс ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ» ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса. Π­Ρ‚ΠΎ Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· ΠΌΠ΅Ρ‚ΠΎΠ΄Π° whoisThis() . ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΌΡ‹ Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса, создавая Π½ΠΎΠ²Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ run() .

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ super() Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° __init__() . Π­Ρ‚ΠΎ позволяСт Π½Π°ΠΌ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ __init__() Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса Π²Π½ΡƒΡ‚Ρ€ΠΈ Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅Π³ΠΎ класса.


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

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

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 4. Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡ Π΄Π°Π½Π½Ρ‹Ρ… Π² Python

 class ΠšΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€:
    Π·Π°Ρ‰ΠΈΡ‚Π° __init__(сам):
        self.__maxprice = 900
    Π΄Π΅Ρ„ ΠΏΡ€ΠΎΠ΄Π°Ρ‚ΡŒ (я):
        print("Π¦Π΅Π½Π° ΠΏΡ€ΠΎΠ΄Π°ΠΆΠΈ: {}".format(self.__maxprice))
    def setMaxPrice (я, Ρ†Π΅Π½Π°):
        self.__maxprice = Ρ†Π΅Π½Π°
с = ΠšΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€()
c.sell()
# ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ†Π΅Π½Ρƒ
c.__maxprice = 1000
c.sell()
# использованиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ установки
c.setMaxPrice(1000)
c.sell() 

Π’Ρ‹Π²ΠΎΠ΄

  Π¦Π΅Π½Π° ΠΏΡ€ΠΎΠ΄Π°ΠΆΠΈ: 900
Π¦Π΅Π½Π° ΠΏΡ€ΠΎΠ΄Π°ΠΆΠΈ: 900
Π¦Π΅Π½Π° ΠΏΡ€ΠΎΠ΄Π°ΠΆΠΈ: 1000  

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΌΡ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈ класс ΠšΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ .

ΠœΡ‹ использовали ΠΌΠ΅Ρ‚ΠΎΠ΄ __init__() для сохранСния максимальной Ρ†Π΅Π½Ρ‹ ΠΏΡ€ΠΎΠ΄Π°ΠΆΠΈ Computer . Π—Π΄Π΅ΡΡŒ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ΄

 c.__maxprice = 1000 

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ ΠΏΠΎΠΏΡ‹Ρ‚Π°Π»ΠΈΡΡŒ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ __maxprice Π²Π½Π΅ класса. Однако, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ __maxprice являСтся Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, эта модификация Π½Π΅ отобраТаСтся Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅.

Как ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ установки, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ setMaxPrice() , которая ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Ρ†Π΅Π½Ρƒ Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°.


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

ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ β€” это ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ (Π² ООП) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Ρ‰ΠΈΠΉ интСрфСйс для Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ„ΠΎΡ€ΠΌ (Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…).

Допустим, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Ρ€Π°ΡΠΊΡ€Π°ΡΠΈΡ‚ΡŒ Ρ„ΠΈΠ³ΡƒΡ€Ρƒ, Π΅ΡΡ‚ΡŒ нСсколько Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² Ρ„ΠΎΡ€ΠΌΡ‹ (ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ, ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚, ΠΊΡ€ΡƒΠ³). Однако ΠΌΡ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°ΡΠΊΡ€Π°ΡΠΈΡ‚ΡŒ Π»ΡŽΠ±ΡƒΡŽ Ρ„ΠΈΠ³ΡƒΡ€Ρƒ. Π­Ρ‚Π° концСпция называСтся ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠΎΠΌ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 5. ИспользованиС ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠ° Π² Python

 класс ΠŸΠΎΠΏΡƒΠ³Π°ΠΉ:
    Π΄Π΅Ρ„ Π»Π΅Ρ‚Π°Ρ‚ΡŒ(я):
        print("ΠŸΠΎΠΏΡƒΠ³Π°ΠΉ ΡƒΠΌΠ΅Π΅Ρ‚ Π»Π΅Ρ‚Π°Ρ‚ΡŒ")
    
    Π΄Π΅Ρ„ ΠΏΠ»Π°Π²Π°Ρ‚ΡŒ(я):
        print("ΠŸΠΎΠΏΡƒΠ³Π°ΠΉ Π½Π΅ ΡƒΠΌΠ΅Π΅Ρ‚ ΠΏΠ»Π°Π²Π°Ρ‚ΡŒ")
класс Пингвин:
    Π΄Π΅Ρ„ Π»Π΅Ρ‚Π°Ρ‚ΡŒ(я):
        print("Пингвин Π½Π΅ ΡƒΠΌΠ΅Π΅Ρ‚ Π»Π΅Ρ‚Π°Ρ‚ΡŒ")
    
    Π΄Π΅Ρ„ ΠΏΠ»Π°Π²Π°Ρ‚ΡŒ(я):
        print("Пингвин ΡƒΠΌΠ΅Π΅Ρ‚ ΠΏΠ»Π°Π²Π°Ρ‚ΡŒ")
# ΠžΠ±Ρ‰ΠΈΠΉ интСрфСйс
def fly_test (ΠΏΡ‚ΠΈΡ†Π°):
    ΠΏΡ‚ΠΈΡ†Π°. Π»Π΅Ρ‚Π°Ρ‚ΡŒ()
#ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ экзСмпляры ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²
синий = ΠΏΠΎΠΏΡƒΠ³Π°ΠΉ ()
ΠΏΠ΅Π³Π³ΠΈ = ΠΏΠΈΠ½Π³Π²ΠΈΠ½()
# ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°
fly_test (синий)
fly_test(peggy) 

Π’Ρ‹Π²ΠΎΠ΄

  ΠŸΠΎΠΏΡƒΠ³Π°ΠΉ ΡƒΠΌΠ΅Π΅Ρ‚ Π»Π΅Ρ‚Π°Ρ‚ΡŒ
Пингвин Π½Π΅ ΡƒΠΌΠ΅Π΅Ρ‚ Π»Π΅Ρ‚Π°Ρ‚ΡŒ  

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΌΡ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈ Π΄Π²Π° класса Parrot ΠΈ Penguin . ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ… ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠ±Ρ‰ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ fly() . Однако Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρƒ Π½ΠΈΡ… Ρ€Π°Π·Π½Ρ‹Π΅.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ, ΠΌΡ‹ создали ΠΎΠ±Ρ‰ΠΈΠΉ интСрфСйс, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ fly_test() , которая ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ любой ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ fly() ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ blu ΠΈ peggy Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ fly_test() , ΠΎΠ½Π° Ρ€Π°Π±ΠΎΡ‚Π°Π»Π° эффСктивно.


ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ слСдуСт ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ:

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

ΠšΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ ООП Π² Python β€” GeeksforGeeks

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

Main Concepts of Object-Oriented Programming (OOPs)Β 

  • Class
  • Objects
  • Polymorphism
  • Encapsulation
  • Inheritance
  • Data Abstraction

OOPsΒ 

ClassΒ 

A class is a collection of objects . Класс содСрТит Ρ‡Π΅Ρ€Ρ‚Π΅ΠΆΠΈ ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΡ‹, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹. Π­Ρ‚ΠΎ логичСский ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ создания класса, Π΄Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€. Допустим, Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ количСство собак, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΏΠΎΡ€ΠΎΠ΄Π°, возраст. Если ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ список, ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ элСмСнтом ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΡ€ΠΎΠ΄Π° собаки, Π° Π²Ρ‚ΠΎΡ€Ρ‹ΠΌ элСмСнтом ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π΅Π΅ возраст. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Π΅ΡΡ‚ΡŒ 100 Ρ€Π°Π·Π½Ρ‹Ρ… собак, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ ΡƒΠ·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠΉ элСмСнт Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΊΠ°ΠΊΠΈΠΌ? Π§Ρ‚ΠΎ, Ссли Π±Ρ‹ Π²Ρ‹ Π·Π°Ρ…ΠΎΡ‚Π΅Π»ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ этим собакам Π΄Ρ€ΡƒΠ³ΠΈΠ΅ свойства? Π­Ρ‚ΠΎΠΌΡƒ Π½Π΅ Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΈ это ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ для занятий.

НСкоторыС ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹ Π² классС Python: Β 

  • ΠšΠ»Π°ΡΡΡ‹ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠΌΡƒ слову class.
  • Атрибуты β€” это ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΠ΅ классу.
  • Атрибуты всСгда общСдоступны, ΠΈ ΠΊ Π½ΠΈΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Ρ‚ΠΎΡ‡ΠΊΠ° (.). НапримСр: Myclass.Myattribute

Бинтаксис опрСдСлСния класса:

 class ClassName:
   # ЗаявлСниС-1
   . 
   .
   .
   # ЗаявлСниС-N 

ΠŸΡ€ΠΈΠΌΠ΅Ρ€: Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ пустого класса Π² Python

Python

Класс Бобака:

Pass

в создании.

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

ΠžΠ±ΡŠΠ΅ΠΊΡ‚ β€” это ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ связано состояниС ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ любой ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΌΠΈΡ€Π°, Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ ΠΌΡ‹ΡˆΡŒ, ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π°, стул, стол, Ρ€ΡƒΡ‡ΠΊΠ° ΠΈ Ρ‚. Π΄. Π¦Π΅Π»Ρ‹Π΅ числа, строки, числа с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой, Π΄Π°ΠΆΠ΅ массивы ΠΈ словари β€” всС это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹. Π‘ΠΎΠ»Π΅Π΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ, любоС Ρ†Π΅Π»ΠΎΠ΅ число ΠΈΠ»ΠΈ любая ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Π°Ρ строка являСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ. Число 12 β€” это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, строка Β«Hello, worldΒ» β€” это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, список β€” это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. Π’Ρ‹ всС врСмя использовали ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π΄Π°ΠΆΠ΅ Π½Π΅ осознавали этого.

ΠžΠ±ΡŠΠ΅ΠΊΡ‚ состоит ΠΈΠ·:

  • БостояниС: Он прСдставлСн Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Он Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΡ‚Ρ€Π°ΠΆΠ°Π΅Ρ‚ свойства ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.
  • ПовСдСниС: ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Он Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΡ‚Ρ€Π°ΠΆΠ°Π΅Ρ‚ Ρ€Π΅Π°ΠΊΡ†ΠΈΡŽ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹.
  • Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ: Π”Π°Π΅Ρ‚ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅ имя ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ ΠΈ позволяСт ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ состояниС, ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½ΠΎΡΡ‚ΡŒ, Π΄Π°Π²Π°ΠΉΡ‚Π΅ возьмСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€ класса собаки (объяснСно Π²Ρ‹ΡˆΠ΅).

  • Π˜Π΄Π΅Π½Ρ‚ΠΈΡ‡Π½ΠΎΡΡ‚ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ имя собаки.
  • БостояниС ΠΈΠ»ΠΈ Атрибуты ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ ΠΏΠΎΡ€ΠΎΠ΄Π°, возраст ΠΈΠ»ΠΈ окрас собаки.
  • По повСдСнию ΠΌΠΎΠΆΠ½ΠΎ ΡΡƒΠ΄ΠΈΡ‚ΡŒ ΠΎ Ρ‚ΠΎΠΌ, Сст собака ΠΈΠ»ΠΈ спит.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€: Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°

Python3

99 9036. ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΡƒΠ³Π»ΡƒΠ±Π»ΡΡ‚ΡŒΡΡ Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈ классы, Π΄Π°Π²Π°ΠΉΡ‚Π΅ разбСрСмся с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ основными ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌΠΈ словами, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ ΠΈ классами.

The self Β Β 
  1. ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°. ΠœΡ‹ Π½Π΅ Π΄Π°Π΅ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ этому ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρƒ ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, Π΅Π³ΠΎ прСдоставляСт Python
  2. Если Ρƒ нас Π΅ΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², Ρ‚ΠΎ Π½Π°ΠΌ всС Ρ€Π°Π²Π½ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚.
  3. Π­Ρ‚ΠΎ ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° этот ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π² C++ ΠΈ эту ссылку Π² Java.

Когда ΠΌΡ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ этого ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΊΠ°ΠΊ myobject.method(arg1, arg2), ΠΎΠ½ автоматичСски прСобразуСтся Python Π² MyClass.method(myobject, arg1, arg2) β€” это всС, Ρ‡Ρ‚ΠΎ касаСтся особого self.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния см. Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ self Π² классС Python. Он запускаСтся, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ создаСтся экзСмпляр ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° класса. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΠΎΠ»Π΅Π·Π΅Π½ для любой ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ с вашим ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ класс ΠΈ создадим нСсколько ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ self ΠΈ __init__.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 1: Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ класса ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° с Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌΠΈ класса ΠΈ экзСмпляра

Python3

OBJ = DOG ()

class Dog:

Β 

Β Β Β Β 

Β Β Β Β  attr1 = "mammal"

Β 

Β Β Β Β 

Β Β Β Β  def __init__( self , name):

Β Β Β Β Β Β Β Β  self . name = name0003

Β 

Rodger = Dog( "Rodger" )

Tommy = Dog( "Tommy" )

Β 

print ( "Rodger is a {}" . format (Rodger.__class__.attr1))

print ( "Tommy is also a {}" . format (Tommy.__class__.attr1))

Β 

print ( "My name is {}" . format (Rodger.name))

print ( "МСня Π·ΠΎΠ²ΡƒΡ‚ {}" . Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ (Tommy.name))

Π’Ρ‹Ρ…ΠΎΠ΄

  • 3 Π ΠΎΠ΄ΠΆΠ΅Ρ€ Π’ΠΎΠΌΠΌΠΈ Ρ‚ΠΎΠΆΠ΅ ΠΌΠ»Π΅ΠΊΠΎΠΏΠΈΡ‚Π°ΡŽΡ‰Π΅Π΅ МСня Π·ΠΎΠ²ΡƒΡ‚ Π ΠΎΠ΄ΠΆΠ΅Ρ€ МСня Π·ΠΎΠ²ΡƒΡ‚ Π’ΠΎΠΌΠΌΠΈ

    ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2: Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ класса ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²

    Python3

    class Dog:

    Β 

    Β Β Β Β 

    Β Β Β Β  attr1 = "mammal"

    Β 

    Β Β Β Β 

    Β Β Β Β  def __init__( self , name):

    Β Β Β Β Β Β Β Β  self .name = name0003

    DEF ( Self ):

    . Self .name))

    Rodger = ( "Rodger" )

    TOMMY 444444444444444444444444444444444444444444444444444444444444444444444444445 44444444444444444444444444444444445 .0045 "Tommy" )

    Rodger.speak ()

    Tommy.peak ()

    9031 9031 9031. МСня Π·ΠΎΠ²ΡƒΡ‚ Π’ΠΎΠΌΠΌΠΈ

    ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ см. Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠšΠ»Π°ΡΡΡ‹ ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Python

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

    НаслСдованиС β€” это ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ ΠΎΠ΄Π½ΠΎΠ³ΠΎ класса ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ свойства Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ класса. Класс, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΉ ΠΎΡ‚ свойств, называСтся ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΌ классом ΠΈΠ»ΠΈ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΌ классом, Π° класс, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ΡΡ свойства, называСтся Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ классом ΠΈΠ»ΠΈ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ классом. ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° наслСдования:

    • Π₯ΠΎΡ€ΠΎΡˆΠΎ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ ΠΌΠΈΡ€Π΅.
    • ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ использования ΠΊΠΎΠ΄Π°. Нам Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΊΠΎΠ΄ снова ΠΈ снова. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, это позволяСт Π½Π°ΠΌ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² класс, Π½Π΅ измСняя Π΅Π³ΠΎ.
    • Он Ρ‚Ρ€Π°Π½Π·ΠΈΡ‚ΠΈΠ²Π΅Π½ ΠΏΠΎ своСй ΠΏΡ€ΠΈΡ€ΠΎΠ΄Π΅, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ссли класс B наслСдуСтся ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ класса A, Ρ‚ΠΎ всС подклассы B автоматичСски Π½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ΡΡ ΠΎΡ‚ класса A.0072 :
      ΠžΠ΄Π½ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ΅ наслСдованиС позволяСт ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠΌΡƒ классу Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ характСристики ΠΎΠ΄Π½ΠΎΡ€ΠΎΠ΄Π½ΠΎΠ³ΠΎ класса.

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

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

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

      Example: Inheritance in Python

      Python3

      Β 

      class Person( object ):

      Β 

      Β Β Β Β 

      Β Β Β Β  def __init__( сам , имя, ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€):

      Β Β Β Β Β Β Β Β  self .name = name

      Β Β Β Β Β Β Β Β  self . idnumber = idnumber

      Β 

      Β Β Β Β  def display( self ):

      ΠŸΠ΅Ρ‡Π°Ρ‚ΡŒ ( Self . ΠŸΠ΅Ρ‡Π°Ρ‚ΡŒ)

      ΠŸΠ΅Ρ‡Π°Ρ‚ΡŒ

      .0045 ( self .idnumber)

      Β Β Β Β Β Β Β Β  Β 

      Β Β Β Β  def details( self ):

      Β Β Β Β Β Β Β Β  print ( "My name is { } " . Π€ΠΎΡ€ΠΌΠ°Ρ‚ ( Self .name))

      ΠŸΠ΅Ρ‡Π°Ρ‚ΡŒ ( " IDNUMB0044 format ( self . idnumber))

      Β Β Β Β  Β 

      class Employee(Person):

      Β Β Β Β  def __init__( self , name, idnumber , Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Π°, ΠΏΠΎΡ‡Ρ‚Π°):

      Self .Salary = Π—Π°Ρ€ΠΏΠ»Π°Ρ‚Π°

      Self .POST 4 = .0045 post

      Β 

      Β Β Β Β Β Β Β Β 

      Β Β Β Β Β Β Β Β  Person.__init__( self , name, idnumber)

      Β Β Β Β Β Β Β Β  Β 

      Β Β Β Β  def details( self ) :

      ΠŸΠ΅Ρ‡Π°Ρ‚ΡŒ ( "МоС имя {}" . Π€ΠΎΡ€ΠΌΠ°Ρ‚ ( Self 0045

      ΠŸΠ΅Ρ‡Π°Ρ‚ΡŒ ( "Idnumber: {}" . . : {}" . format ( self .post))

      Β 

      Β 

      a = Employee( 'Rahul' , 886012 , 200000 , "Intern" )

      Β 

      a.display()

      a.details()

      Output

       Π Π°Ρ…ΡƒΠ»
      886012
      МСня Π·ΠΎΠ²ΡƒΡ‚ Π Π°Ρ…ΡƒΠ»
      Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€: 886012
      Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅: Intern 

      Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π²Ρ‹ΡˆΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ создали Π΄Π²Π° класса: Person (Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ класс) ΠΈ Employee (Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ класс). Класс Employee наслСдуСтся ΠΎΡ‚ класса Person. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса person Ρ‡Π΅Ρ€Π΅Π· класс сотрудников, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ отобраТСния Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄Π΅. Π”ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ класс Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса, ΠΊΠ°ΠΊ Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· ΠΌΠ΅Ρ‚ΠΎΠ΄Π° details().

      ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Для получСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ΡΡŒ ΠΊ Π½Π°ΡˆΠ΅ΠΌΡƒ руководству ΠΏΠΎ наслСдованию Π² Python.

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

      ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ просто ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ мноТСства Ρ„ΠΎΡ€ΠΌ. НапримСр, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, Π»Π΅Ρ‚Π°ΡŽΡ‚ Π»ΠΈ Π΄Π°Π½Π½Ρ‹Π΅ Π²ΠΈΠ΄Ρ‹ ΠΏΡ‚ΠΈΡ† ΠΈΠ»ΠΈ Π½Π΅Ρ‚, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ΄Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€: ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ Π² Python0321 DEF Intro ( Self ):

      Print ( "Π•ΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠΎΠ² ΠΏΡ‚ΠΈΡ†. ΠŸΠΎΠ»Π΅Ρ‚ ( Self ):

      ΠŸΠ΅Ρ‡Π°Ρ‚ΡŒ ( "Π‘ΠΎΠ»ΡŒΡˆΠ°Ρ Ρ‡Π°ΡΡ‚ΡŒ ΠΏΡ‚ΠΈΡ† ΠΌΠΎΠΆΠ΅Ρ‚ Π»Π΅Ρ‚Π°Ρ‚ΡŒ, Π½ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚. 0003

      class sparrow(Bird):

      Β Β  Β 

      Β Β Β Β  def flight( self ):

      Β Β Β Β Β Β Β Β  print ( "Sparrows can fly. " )

      Класс ΠžΡΡ‚Ρ€ΠΈΡ… (ΠΏΡ‚ΠΈΡ†Π°):

      DEF ( 4445 ( 4444)0045

      Β Β Β Β Β Β Β Β  print ( "Ostriches cannot fly." )

      Β 

      obj_bird = Bird()

      obj_spr = sparrow()

      OBJ_OST = OSTRICH ()

      OBJ_BIRD. INTRO ()

      . OBJ_BIRD.FLIGH0045

      obj_spr.flight ()

      obj_ost.intro ()

      obj_ost.flight ()

      5999333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333Π½. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΏΡ‚ΠΈΡ† ΠΌΠΎΠ³ΡƒΡ‚ Π»Π΅Ρ‚Π°Ρ‚ΡŒ, Π½ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚. Π•ΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΠΈΠ΄ΠΎΠ² ΠΏΡ‚ΠΈΡ†. Π’ΠΎΡ€ΠΎΠ±ΡŒΠΈ ΡƒΠΌΠ΅ΡŽΡ‚ Π»Π΅Ρ‚Π°Ρ‚ΡŒ. Π•ΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΠΈΠ΄ΠΎΠ² ΠΏΡ‚ΠΈΡ†. Бтраусы Π½Π΅ ΡƒΠΌΠ΅ΡŽΡ‚ Π»Π΅Ρ‚Π°Ρ‚ΡŒ.

      ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Для получСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ΡΡŒ ΠΊ Π½Π°ΡˆΠ΅ΠΌΡƒ ΡƒΡ‡Π΅Π±Π½ΠΈΠΊΡƒ ΠΏΠΎ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΡƒ Π² Python.

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

      Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡ β€” ΠΎΠ΄Π½Π° ΠΈΠ· Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования (ООП). Он описываСт идСю ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ Π±Π»ΠΎΠΊΠ΅. Π­Ρ‚ΠΎ Π½Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π΅Ρ‚ ограничСния Π½Π° прямой доступ ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ случайноС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ случайноС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅, пСрСмСнная ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Π­Ρ‚ΠΈ Ρ‚ΠΈΠΏΡ‹ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… извСстны ΠΊΠ°ΠΊ частныС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅.

      Класс являСтся ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ инкапсуляции, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ инкапсулируСт всС Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ функциями-Ρ‡Π»Π΅Π½Π°ΠΌΠΈ, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ ΠΈ Ρ‚. Π΄.

      Example: Encapsulation in Python

      Python3

      Β 

      class Base:

      Β Β Β Β  def __init__( self ):

      Β Β Β Β Β Β Β Β  Self .A = "Geeksforgeeks"

      Self .__ C = "Geeksforgeeks"0045

      Β 

      class Derived(Base):

      Β Β Β Β  def __init__( self ):

      Β 

      Β Β Β Β Β Β Β Β 

      Β Β Β Β Β Β Β Β 

      Β Β Β Β Β Β Β Β  Base. __init__( self )

      Β Β Β Β Β Β Β Β  print ( "Π’Ρ‹Π·ΠΎΠ² частного Ρ‡Π»Π΅Π½Π° Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса: " 5

      45

      Β Β Β Β Β Β Β Β  print ( self .__c)

      Β 

      Β 

      obj1 = Base()

      print (obj1.a)

      Β 

      Π’Ρ‹Π²ΠΎΠ΄

       GeeksforGeeks 

      Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ создали ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ c Π² качСствС частного Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°. ΠœΡ‹ Π΄Π°ΠΆΠ΅ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ этому Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρƒ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΈ Π΄Π°ΠΆΠ΅ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

      ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: для получСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ΡΡŒ ΠΊ Π½Π°ΡˆΠ΅ΠΌΡƒ руководству ΠΏΠΎ инкапсуляции Π² Python.