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

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

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

БСгодня ΠΌΡ‹ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎΠ± ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΈ ΠΎ Π΅Π³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π² 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

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

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

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ сцСнарий, Π³Π΄Π΅ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π±ΠΎΠ»ΠΈΠ΄ Π€ΠΎΡ€ΠΌΡƒΠ»Ρ‹-1 ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования. ΠŸΠ΅Ρ€Π²ΠΎΠ΅, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ β€” это ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π² настоящСй Π³ΠΎΠ½ΠΊΠ΅ Π€ΠΎΡ€ΠΌΡƒΠ»Π°-1. КакиС аспСкты Π² Π€ΠΎΡ€ΠΌΡƒΠ»Π΅-1 ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌΠΈ характСристиками ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Ρ‚Ρƒ ΠΈΠ»ΠΈ ΠΈΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ?

Π•ΡΡ‚ΡŒ вопросы ΠΏΠΎ Python?

На нашСм Ρ„ΠΎΡ€ΡƒΠΌΠ΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°Π΄Π°Ρ‚ΡŒ любой вопрос ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΎΡ‚Π²Π΅Ρ‚ ΠΎΡ‚ всСго нашСго сообщСства!

Telegram Π§Π°Ρ‚ & Канал

ВступитС Π² наш Π΄Ρ€ΡƒΠΆΠ½Ρ‹ΠΉ Ρ‡Π°Ρ‚ ΠΏΠΎ Python ΠΈ Π½Π°Ρ‡Π½ΠΈΡ‚Π΅ ΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ с Π΅Π΄ΠΈΠ½ΠΎΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊΠ°ΠΌΠΈ! Π‘Ρ‚Π°Π½ΡŒΡ‚Π΅ Ρ‡Π°ΡΡ‚ΡŒΡŽ большого сообщСства!

Паблик VK

Одно ΠΈΠ· самых Π±ΠΎΠ»ΡŒΡˆΠΈΡ… сообщСств ΠΏΠΎ Python Π² ΡΠΎΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ сСти Π’Πš. Π’ΠΈΠ΄Π΅ΠΎ ΡƒΡ€ΠΎΠΊΠΈ ΠΈ ΠΊΠ½ΠΈΠ³ΠΈ для вас!

Один ΠΈΠ· ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹Ρ… ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ² Π½Π° этот вопрос β€” Π³ΠΎΠ½ΠΎΡ‡Π½Ρ‹ΠΉ Π±ΠΎΠ»ΠΈΠ΄. Условный Π±ΠΎΠ»ΠΈΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Π»Π°Π΄Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠΌΠΈ характСристиками ΠΊΠ°ΠΊ:

  • ΠΌΠΎΡ‰Π½ΠΎΡΡ‚ΡŒ двигатСля;
  • ΠΌΠ°Ρ€ΠΊΠ°;
  • модСль;
  • ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ, ΠΈ Ρ‚.Β Π΄.

БоотвСтствСнно, Π±ΠΎΠ»ΠΈΠ΄ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ, ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ, ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ, ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. Π“ΠΎΠ½Ρ‰ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΈΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ Π² Π€ΠΎΡ€ΠΌΡƒΠ»Π΅-1. Π“ΠΎΠ½Ρ‰ΠΈΠΊ ΠΈΠΌΠ΅Π΅Ρ‚ Π½Π°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, возраст, ΠΏΠΎΠ», ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅, ΠΊΡ€ΠΎΠΌΠ΅ этого, ΠΎΠ½ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ Ρ‚Π°ΠΊΠΈΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΠΎΠΌ, ΠΊΠ°ΠΊ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π±ΠΎΠ»ΠΈΠ΄ΠΎΠΌ, Ρ€ΡƒΠ»Π΅Π²ΠΎΠ΅ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅, ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡.

Как ΠΈ Π² этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΌΡ‹ создадим ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΌ аспСктам.

Π‘Ρ‚ΠΎΠΈΡ‚ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ β€” Π½Π΅ зависящая ΠΎΡ‚ языка программирования концСпция. Π­Ρ‚ΠΎ общая концСпция программирования ΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ соврСмСнных языков, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Java, C#, C++ ΠΈ Python ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅.

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΡƒΡŽ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования Π² Python, Π½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄ этим, рассмотрим Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ прСимущСства ΠΈ нСдостатки ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования.

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° ΠΈ нСдостатки ООП Python

Рассмотрим нСсколько основных прСимущСств ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования:

  1. ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ использованиС. ΠšΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Π°Ρ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° написанная Π² Ρ„ΠΎΡ€ΠΌΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ классов ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использована снова Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ… Π±Π΅Π· повторСния ΠΊΠΎΠ΄Π°;
  2. ИспользованиС модулярного ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ позволяСт ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΉ ΠΈ Π³ΠΈΠ±ΠΊΠΈΠΉ ΠΊΠΎΠ΄;
  3. Π’ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ класс ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ. Если ошибка Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚ Π² ΠΎΠ΄Π½ΠΎΠΉ части ΠΊΠΎΠ΄Π°, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π΅Π΅ локально, Π±Π΅Π· нСобходимости Π²ΠΌΠ΅ΡˆΠΈΠ²Π°Ρ‚ΡŒΡΡ Π² Π΄Ρ€ΡƒΠ³ΠΈΠ΅ части ΠΊΠΎΠ΄Π°;
  4. Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡ Π΄Π°Π½Π½Ρ‹Ρ… (ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ рассмотрим дальшС Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅) вносит Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ бСзопасности Π² Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ с использованиСм ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°;

Π₯отя ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ рядом прСимущСств, ΠΎΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ содСрТит ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ нСдостатки, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Π½ΠΈΡ… находятся Π² спискС Π½ΠΈΠΆΠ΅:

  1. Для создания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ прСдставлСниС ΠΎ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌ обСспСчСнии;
  2. НС ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ аспСкт ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния являСтся Π»ΡƒΡ‡ΡˆΠΈΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π² качСствС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Для Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ тяТСло ΠΏΡ€ΠΎΡ‡Π΅Ρ€Ρ‚ΠΈΡ‚ΡŒ линию Π² Π·ΠΎΠ»ΠΎΡ‚ΠΎΠΉ сСрСдинС;
  3. Π‘ Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ Π²Ρ‹ вноситС всС Π½ΠΎΠ²Ρ‹Π΅ ΠΈ Π½ΠΎΠ²Ρ‹Π΅ классы Π² ΠΊΠΎΠ΄, Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΈ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ растСт Π² гСомСтричСской прогрСссии;

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΌΡ‹ рассмотрим ряд самых Π²Π°ΠΆΠ½Ρ‹Ρ… ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования.

Как ΠΈ слСдуСт ΠΈΠ· названия, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ β€” это Ρ€Π΅Ρ‡ΡŒ ΠΎΠ± ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°Ρ…. Однако, ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π΅Π³ΠΎ класс.

Класс

Класс Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ выступаСт Π² Ρ€ΠΎΠ»ΠΈ Ρ‡Π΅Ρ€Ρ‚Π΅ΠΆΠ° для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Класс ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΊΠ°Ρ€Ρ‚Ρƒ Π΄ΠΎΠΌΠ°. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ выглядит Π΄ΠΎΠΌ, просто взглянув Π½Π° Π΅Π³ΠΎ ΠΊΠ°Ρ€Ρ‚Ρƒ.

CΠ°ΠΌ ΠΏΠΎ сСбС класс Π½Π΅ прСдставляСт Π½ΠΈΡ‡Π΅Π³ΠΎ. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, нСльзя ΡΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ ΠΊΠ°Ρ€Ρ‚Π° являСтся Π΄ΠΎΠΌΠΎΠΌ, ΠΎΠ½Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ ΠΊΠ°ΠΊ настоящий Π΄ΠΎΠΌ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ.

ΠžΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ классом ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ наглядно, взглянув Π½Π° ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ машиной ΠΈ Audi. Π”Π°, Audi – это машина. Однако, Π½Π΅Ρ‚ Ρ‚Π°ΠΊΠΎΠΉ Π²Π΅Ρ‰ΠΈ, ΠΊΠ°ΠΊ просто машина. Машина β€” это абстрактная концСпция, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ Π² Toyota, Honda, Ferrari, ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… компаниях.

ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово class ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для создания класса Π² Python. НазваниС класса слСдуСт Π·Π° ΠΊΠ»ΡŽΡ‡ΠΎΠΌ class, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ слСдуСт Π΄Π²ΠΎΠ΅Ρ‚ΠΎΡ‡ΠΈΠ΅. Π’Π΅Π»ΠΎ класса начинаСтся с Π½ΠΎΠ²ΠΎΠΉ строки, с отступом Π½Π° ΠΎΠ΄Π½Ρƒ Π²ΠΊΠ»Π°Π΄ΠΊΡƒ Π²Π»Π΅Π²ΠΎ.

Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим, ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ самый простой класс Π² Python. ВзглянСм Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ класс Car class Car: # создаСм Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ класса name = «c200» make = «mercedez» model = 2008 # создаСм ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса def start(self): print («Π—Π°Π²ΠΎΠ΄ΠΈΠΌ Π΄Π²ΠΈΠ³Π°Ρ‚Π΅Π»ΡŒ») def stop(self): print («ΠžΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ Π΄Π²ΠΈΠ³Π°Ρ‚Π΅Π»ΡŒ»)

# БоздаСм класс Car

class Car:

Β 

Β Β Β Β # создаСм Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ класса

Β Β Β Β name = «c200»

Β Β Β Β make = «mercedez»

Β Β Β Β model = 2008

Β 

Β Β Β Β # создаСм ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса

Β Β Β Β def start(self):

Β Β Β Β Β Β Β Β print («Π—Π°Π²ΠΎΠ΄ΠΈΠΌ Π΄Π²ΠΈΠ³Π°Ρ‚Π΅Π»ΡŒ»)

Β 

Β Β Β Β def stop(self):

Β Β Β Β Β Β Β Β print («ΠžΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ Π΄Π²ΠΈΠ³Π°Ρ‚Π΅Π»ΡŒ»)

Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Ρ‹ΡˆΠ΅ ΠΌΡ‹ создали класс ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Car с трСмя Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌΠΈ: имя name, ΠΌΠ°Ρ€ΠΊΠ° make ΠΈ модСль model. Наш класс Ρ‚Π°ΠΊΠΆΠ΅ содСрТит Π΄Π²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π°: start() ΠΈ stop().

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

Π Π°Π½Π½Π΅Π΅ ΠΌΡ‹ поняли, Ρ‡Ρ‚ΠΎ класс прСдоставляСт Ρ‡Π΅Ρ€Ρ‚Π΅ΠΆ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Однако, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π° самом Π΄Π΅Π»Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈΠ· этого класса. БущСствуСт нСсколько ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² класса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Π½Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΌΡ‹ рассмотрим ΠΈΡ… Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅.

БСйчас просто Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ ΠΌΡ‹ смоТСм Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹.

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

Π”Π°Π²Π°ΠΉΡ‚Π΅ создадим ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса Car, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ создали Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅.

# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса Car ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ car_a car_a = Car() # Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса Car ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ car_b car_b = Car()

# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса Car ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ car_a

car_a = Car()

Β 

# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса Car ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ car_b

car_b = Car()

Π’ этом скриптС ΠΌΡ‹ создали Π΄Π²Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° класса Car: car_a ΠΈ car_b. Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏ созданных Π½Π°ΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ type ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π΅ΠΌΡƒ названия Π½Π°ΡˆΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

Π’ Π²Ρ‹Π΄Π°Ρ‡Π΅ Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅:

Π­Ρ‚ΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ Π½Π°ΠΌ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ‚ΠΈΠΏ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° car_b – класс Car.

На Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΌΡ‹ создали наш класс ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π΅ΠΌΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹. Π’Π΅ΠΏΠ΅Ρ€ΡŒ настало врСмя ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌ класса ΠΈ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ класса ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° класса. Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²ΠΏΠΈΡΠ°Ρ‚ΡŒ имя ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ слСдуСт ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ‚ΠΎΡ‡ΠΊΠ° . ΠΈ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΈΠ»ΠΈ Π²Ρ‹Π·ΠΎΠ², соотвСтствСнно. Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

Π’ этом скриптС ΠΌΡ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ start() Ρ‡Π΅Ρ€Π΅Π· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ car_b. Π’Ρ‹Π΄Π°Ρ‡Π° Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π—Π°Π²ΠΎΠ΄ΠΈΠΌ Π΄Π²ΠΈΠ³Π°Ρ‚Π΅Π»ΡŒ

Π—Π°Π²ΠΎΠ΄ΠΈΠΌ Π΄Π²ΠΈΠ³Π°Ρ‚Π΅Π»ΡŒ

Аналогично, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρƒ, ΠΏΠΎΠ»ΡŒΠ·ΡƒΡΡΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ синтаксисом:

Π’ Π²Ρ‹Π΄Π°Ρ‡Π΅ Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΌΠΎΠ΄Π΅Π»ΠΈ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅:

Атрибуты класса

Π’ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ сСкции ΠΌΡ‹ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π»ΠΈΡΡŒ, ΠΊΠ°ΠΊ

ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ класса ΠΈ ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эти ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ для получСния доступа ΠΊ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌ класса

Π’ Python, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ содСрТит ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π² Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌΠΈ. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° всС Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π²ΡΡ‚Ρ€ΠΎΠ΅Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ dir(). ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Π²Π·Π³Π»ΡΠ½ΡƒΡ‚ΡŒ Π½Π° всС Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° car_b, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ создали Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅. Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ скрипт:

Π’ Π²Ρ‹Π΄Π°Ρ‡Π΅ Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹:

[‘__class__’, ‘__delattr__’, ‘__dict__’, ‘__dir__’, ‘__doc__’, ‘__eq__’, ‘__format__’, ‘__ge__’, ‘__getattribute__’, ‘__gt__’, ‘__hash__’, ‘__init__’, ‘__init_subclass__’, ‘__le__’, ‘__lt__’, ‘__module__’, ‘__ne__’, ‘__new__’, ‘__reduce__’, ‘__reduce_ex__’, ‘__repr__’, ‘__setattr__’, ‘__sizeof__’, ‘__str__’, ‘__subclasshook__’, ‘__weakref__’, ‘make’, ‘model’, ‘name’, ‘start’, ‘stop’]

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

[‘__class__’,

‘__delattr__’,

‘__dict__’,

‘__dir__’,

‘__doc__’,

‘__eq__’,

‘__format__’,

‘__ge__’,

‘__getattribute__’,

‘__gt__’,

‘__hash__’,

‘__init__’,

‘__init_subclass__’,

‘__le__’,

‘__lt__’,

‘__module__’,

‘__ne__’,

‘__new__’,

‘__reduce__’,

‘__reduce_ex__’,

‘__repr__’,

‘__setattr__’,

‘__sizeof__’,

‘__str__’,

‘__subclasshook__’,

‘__weakref__’,

‘make’,

‘model’,

‘name’,

‘start’,

‘stop’]

Π­Ρ‚Π° встроСнная функция ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Π° ΠΏΡ€ΠΈ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ²

ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, особСнно ΠΏΡ€ΠΈ использовании Ρ‡Π΅Ρ€Π΅Π· REPL.

Атрибуты класса ΠΏΡ€ΠΎΡ‚ΠΈΠ² Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² экзСмпляров

Атрибуты ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ наглядно отнСсСны ΠΊ Π΄Π²ΡƒΠΌ Ρ‚ΠΈΠΏΠ°ΠΌ:

  • Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ класса
  • Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ экзСмпляров

Атрибуты класса дСлятся срСди всСх ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² класса, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ экзСмпляров ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ экзСмпляра.
ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ экзСмпляр β€” это просто Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

Атрибуты экзСмпляра ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ΡΡ Π²Π½ΡƒΡ‚Ρ€ΠΈ любого ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ класса ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ΡΡ Π²Π½Π΅ любого ΠΌΠ΅Ρ‚ΠΎΠ΄Π°.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ прояснит эту Ρ€Π°Π·Π½ΠΈΡ†Ρƒ:

class Car: # создаСм Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ класса car_count = 0 # создаСм ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса def start(self, name, make, model): print(«Π”Π²ΠΈΠ³Π°Ρ‚Π΅Π»ΡŒ Π·Π°Π²Π΅Π΄Π΅Π½») self.name = name self.make = make self.model = model Car.car_count += 1

class Car:

Β 

Β Β Β Β # создаСм Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ класса

Β Β Β Β car_count = 0

Β 

Β Β Β Β # создаСм ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса

Β Β Β Β def start(self, name, make, model):

Β Β Β Β Β Β Β Β print(«Π”Π²ΠΈΠ³Π°Ρ‚Π΅Π»ΡŒ Π·Π°Π²Π΅Π΄Π΅Π½»)

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

Β Β Β Β Β Β Β Β self.make = make

Β Β Β Β Β Β Β Β self.model = model

Β Β Β Β Β Β Β Β Car.car_count += 1

Π’ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ скриптС ΠΌΡ‹ создаСм класс Car с ΠΎΠ΄Π½ΠΈΠΌ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠΌ класса ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ car_count ΠΈ Ρ‚Ρ€ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° экзСмпляра ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ name, make ΠΈ model. Класс содСрТит ΠΎΠ΄ΠΈΠ½ ΠΌΠ΅Ρ‚ΠΎΠ΄ start(), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит наши Ρ‚Ρ€ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° экзСмпляров. ЗначСния Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² экзСмпляров ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Ρ‹ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ start(). Π’Π½ΡƒΡ‚Ρ€ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° start, Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ car_count ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ Π½Π° ΠΎΠ΄ΠΈΠ½.

Π‘Ρ‚ΠΎΠΈΡ‚ ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ экзСмпляра ΡΡΡ‹Π»Π°ΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова self, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ класса ΡΡΡ‹Π»Π°ΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ названия класса.

Π”Π°Π²Π°ΠΉΡ‚Π΅ создадим ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса

Car ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ start().

car_a = Car() car_a.start(«Corrola», «Toyota», 2015) print(car_a.name) print(car_a.car_count)

car_a = Car()Β Β 

car_a.start(«Corrola», «Toyota», 2015)Β Β 

print(car_a.name)Β Β 

print(car_a.car_count)

Π’ скриптС Π²Ρ‹ΡˆΠ΅ ΠΌΡ‹ Π²Ρ‹Π²Π΅Π»ΠΈ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° экзСмпляра ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° класса car_count. Π’ Π²Ρ‹Π΄Π°Ρ‡Π΅ Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ car_count Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 1, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅:

Π”Π²ΠΈΠ³Π°Ρ‚Π΅Π»ΡŒ Π·Π°Π²Π΅Π΄Π΅Π½ Corrola 1

Π”Π²ΠΈΠ³Π°Ρ‚Π΅Π»ΡŒ Π·Π°Π²Π΅Π΄Π΅Π½

CorrolaΒ Β 

1

Π’Π΅ΠΏΠ΅Ρ€ΡŒ создадим Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса Car ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ start().

car_b = Car() car_b.start(«City», «Honda», 2013) print(car_b.name) print(car_b.car_count)

car_b = Car()Β Β 

car_b.start(«City», «Honda», 2013)Β Β 

print(car_b.name)Β Β 

print(car_b.car_count)

БСйчас Ссли Π²Ρ‹ Π²Ρ‹Π²Π΅Π΄ΠΈΡ‚Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° car_count, Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ 2 Π² Π²Ρ‹Π΄Π°Ρ‡Π΅. Π­Ρ‚ΠΎ связано с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ car_count являСтся Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠΌ класса ΠΈ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΎΠ½ раздСляСтся ΠΌΠ΅ΠΆΠ΄Ρƒ экзСмплярами. ΠžΠ±ΡŠΠ΅ΠΊΡ‚ car_a ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ» своС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π΄ΠΎ 1, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ car_b ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ» своС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π΅Ρ‰Π΅ Ρ€Π°Π·, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΈΡ‚ΠΎΠ³ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ равняСтся 2. Π’Ρ‹Π΄Π°Ρ‡Π° выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π”Π²ΠΈΠ³Π°Ρ‚Π΅Π»ΡŒ Π·Π°Π²Π΅Π΄Π΅Π½ City 2

Π”Π²ΠΈΠ³Π°Ρ‚Π΅Π»ΡŒ Π·Π°Π²Π΅Π΄Π΅Π½

CityΒ Β 

2

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

Как ΠΌΡ‹ выяснили Ρ€Π°Π½Π΅Π΅, Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ, ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΠΎΠ² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Π’ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΌΡ‹ создали ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ start() ΠΈ stop() для класса Car. Π”ΠΎ этих ΠΏΠΎΡ€, ΠΌΡ‹ использовали ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ класса для Π²Ρ‹Π·ΠΎΠ²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ². Однако, Π΅ΡΡ‚ΡŒ Ρ‚ΠΈΠΏ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π·Π²Π°Π½ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΈΠΌΠ΅Π½ΠΈ класса. Π’Π°ΠΊΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ называСтся статичным ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ.

Π‘Ρ‚Π°Ρ‚ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹

Для объявлСния статичСского ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ дСскриптор @staticmethod ΠΏΠ΅Ρ€Π΅Π΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅:

class Car: @staticmethod def get_class_details(): print («Π­Ρ‚ΠΎ класс Car») Car.get_class_details()

class Car:

Β 

Β Β Β Β @staticmethod

Β Β Β Β def get_class_details():

Β Β Β Β Β Β Β Β print («Π­Ρ‚ΠΎ класс Car»)

Β 

Car.get_class_details()

Π’ ΠΊΠΎΠ΄Π΅ Π²Ρ‹ΡˆΠ΅ ΠΌΡ‹ создали класс Car с ΠΎΠ΄Π½ΠΈΠΌ статичным ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ get_class_details(). Π”Π°Π²Π°ΠΉΡ‚Π΅ Π²Ρ‹Π·ΠΎΠ²Π΅ΠΌ этот ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ класса.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ экзСмпляр класса Car для Π²Ρ‹Π·ΠΎΠ²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° get_class_details(), вмСсто этого ΠΌΡ‹ просто использовали Π½Π°Π·Π²Π°Π½ΠΈΠ΅ класса. Π‘Ρ‚ΠΎΠΈΡ‚ ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ статичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ доступ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌ класса Π² Python, Π²Ρ‹ Π½Π΅ смоТСтС ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ Ρ‡Π΅Ρ€Π΅Π· self.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ мноТСствСнных Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈΠ· ΠΌΠ΅Ρ‚ΠΎΠ΄Π°

Одна ΠΈΠ· Π»ΡƒΡ‡ΡˆΠΈΡ… особСнностСй языка Python Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ мноТСствСнныС значСния. ВзглянитС Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

class Square: @staticmethod def get_squares(a, b): return a*a, b*b print(Square.get_squares(3, 5))

class Square:

Β 

Β Β Β Β @staticmethod

Β Β Β Β def get_squares(a, b):

Β Β Β Β Β Β Β Β return a*a, b*b

Β 

print(Square.get_squares(3, 5))

Π’ скриптС Π²Ρ‹ΡˆΠ΅ ΠΌΡ‹ создали класс ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Square со статичным ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ get_squares(). ΠœΠ΅Ρ‚ΠΎΠ΄ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π΄Π²Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°. Он ΡƒΠΌΠ½ΠΎΠΆΠ°Π΅Ρ‚ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π½Π° сСбя ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΠ±Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° return. Π’ Π²Ρ‹Π΄Π°Ρ‡Π΅ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹ΡˆΠ΅ скрипта Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Ρ‹ 3 ΠΈ 5.

ΠœΠ΅Ρ‚ΠΎΠ΄ str

Π”ΠΎ этого ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° ΠΌΡ‹ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠ»ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° print(). ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ, Ρ‡Ρ‚ΠΎ случится, Ссли ΠΌΡ‹ Π²Ρ‹Π²Π΅Π΄Π΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса.

Для этого Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ простой класс Car с ΠΎΠ΄Π½ΠΈΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ вывСсти ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса Π² консоль. Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ скрипт:

class Car: # созданиС ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² класса def start(self): print («Π”Π²ΠΈΠ³Π°Ρ‚Π΅Π»ΡŒ Π·Π°Π²Π΅Π΄Π΅Π½») car_a = Car() print(car_a)

class Car:

Β 

Β Β Β Β # созданиС ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² класса

Β Β Β Β def start(self):

Β Β Β Β Β Β Β Β print («Π”Π²ΠΈΠ³Π°Ρ‚Π΅Π»ΡŒ Π·Π°Π²Π΅Π΄Π΅Π½»)

Β 

car_a = Car()Β Β 

print(car_a)

Π’ скриптС Π²Ρ‹ΡˆΠ΅ ΠΌΡ‹ создали ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ car_a класса Car ΠΈ Π²Ρ‹Π²Π΅Π»ΠΈ Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π° экран. По сути ΠΌΡ‹ относимся ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ car_a ΠΊΠ°ΠΊ ΠΊ строкС. Π’Ρ‹Π΄Π°Ρ‡Π° выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

<__main__.Car object at 0x000001CCCF4335C0>

<__main__.Car object at 0x000001CCCF4335C0>

Π’Ρ‹Π΄Π°Ρ‡Π° ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π»ΠΎΠΊΠ°Ρ†ΠΈΡŽ памяти, Π³Π΄Π΅ хранится наш ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Python ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ содСрТит ΠΌΠ΅Ρ‚ΠΎΠ΄ __str__ . Когда Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² качСствС строки, вызываСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ __str__ , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π»ΠΎΠΊΠ°Ρ†ΠΈΡŽ памяти ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Однако, Π²Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ собствСнноС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° __str__ . НапримСр, ΠΊΠ°ΠΊ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅:

# созданиС класса Car class Car: # созданиС ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² класса def __str__(self): return «Car class Object» def start(self): print («Π”Π²ΠΈΠ³Π°Ρ‚Π΅Π»ΡŒ Π·Π°Π²Π΅Π΄Π΅Π½») car_a = Car() print(car_a)

# созданиС класса Car

class Car:

Β 

Β Β Β Β # созданиС ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² класса

Β Β Β Β def __str__(self):

Β Β Β Β Β Β Β Β return «Car class Object»

Β 

Β Β Β Β def start(self):

Β Β Β Β Β Β Β Β print («Π”Π²ΠΈΠ³Π°Ρ‚Π΅Π»ΡŒ Π·Π°Π²Π΅Π΄Π΅Π½»)

Β 

car_a = Car()Β Β 

print(car_a)

Π’ скриптС Π²Ρ‹ΡˆΠ΅, ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ __str__ , прСдоставив нашС собствСнноС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°. Π’Π΅ΠΏΠ΅Ρ€ΡŒ, Ссли Π²Ρ‹ Π²Ρ‹Π²Π΅Π΄ΠΈΡ‚Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ car_a, Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ сообщСниС Β«Car class ObjectΒ» Π² консоли. Π­Ρ‚ΠΎ сообщСниС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΡ‹ внСсли Π² наш ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ __str__ .

ИспользованиС этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π° позволяСт Π²Π°ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ ΠΈ Π±ΠΎΠ»Π΅Π΅ осмыслСнныС описания, ΠΊΠΎΠ³Π΄Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ выводится. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π°ΠΆΠ΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ ΠΊΠΎΠ΅-ΠΊΠ°ΠΊΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ класса, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ класса Car.

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€Ρ‹

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ β€” это ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ вызываСтся ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ создаСтС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса.

Для создания конструктора Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ с ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ словом __init__. ВзглянитС Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

class Car: # созданиС Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² класса car_count = 0 # созданиС ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² класса def __init__(self): Car.car_count +=1 print(Car.car_count)

class Car:

Β 

Β Β Β Β # созданиС Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² класса

Β Β Β Β car_count = 0

Β 

Β Β Β Β # созданиС ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² класса

Β Β Β Β def __init__(self):

Β Β Β Β Β Β Β Β Car.car_count +=1

Β Β Β Β Β Β Β Β print(Car.car_count)

Π’ скриптС Π²Ρ‹ΡˆΠ΅ ΠΌΡ‹ создали класс Car с ΠΎΠ΄Π½ΠΈΠΌ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠΌ класса car_count. Класс содСрТит конструктор, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ car_count ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ ΠΈΡ‚ΠΎΠ³ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π° экран.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса Car Π±ΡƒΠ΄Π΅Ρ‚ создан, конструктор Ρ‚Π°ΠΊΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Π²Π°Π½, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ car_count увСличится ΠΈ отобразится Π½Π° экранС. Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ простой ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈ посмотрим, Ρ‡Ρ‚ΠΎ Π²Ρ‹ΠΉΠ΄Π΅Ρ‚:

car_a = Car() car_b = Car() car_c = Car()

car_a = Car()Β Β 

car_b = Car()Β Β 

car_c = Car()

Π’ Π²Ρ‹Π΄Π°Ρ‡Π΅ Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ Π²Ρ‹Π²Π΅Π΄Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 1, 2 ΠΈ 3, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ car_count увСличиваСтся ΠΈ отобраТаСтся Π½Π° экранС.

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

Π›ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΎΡ‚ΠΈΠ² Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ…

ΠœΡ‹ Π·Π½Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π΄Π²Π° Ρ‚ΠΈΠΏΠ° Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² Python: Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ экзСмпляра ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ класса.

Атрибуты класса Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ. Π’ зависимости ΠΎΡ‚ области видимости, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚ΡŒΡΡ ΠΊ Π΄Π²ΡƒΠΌ Ρ‚ΠΈΠΏΠ°ΠΌ: Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅.

Π›ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅

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

# создаСм класс Car class Car: def start(self): message = «Π”Π²ΠΈΠ³Π°Ρ‚Π΅Π»ΡŒ Π·Π°Π²Π΅Π΄Π΅Π½» return message

# создаСм класс Car

class Car:Β Β 

Β Β Β Β def start(self):

Β Β Β Β Β Β Β Β message = «Π”Π²ΠΈΠ³Π°Ρ‚Π΅Π»ΡŒ Π·Π°Π²Π΅Π΄Π΅Π½»

Β Β Β Β Β Β Β Β return message

Π’ скриптС Π²Ρ‹ΡˆΠ΅ ΠΌΡ‹ создали Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ message Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° start() класса Car. Π’Π΅ΠΏΠ΅Ρ€ΡŒ создадим ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса Car ΠΈ попытаСмся ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ локальной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ message, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅:

car_a = Car() print(car_a.message)

car_a = Car()Β Β 

print(car_a.message)

Π‘ΠΊΡ€ΠΈΠΏΡ‚ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ошибкС AttributeError:

AttributeError: ‘Car’ object has no attribute ‘message’

AttributeError: ‘Car’ object has no attribute ‘message’

Π­Ρ‚ΠΎ связано с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ локальной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π²Π½Π΅ Π±Π»ΠΎΠΊΠ°, Π³Π΄Π΅ эта локальная пСрСмСнная Π±Ρ‹Π»Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π°.

Π“Π»ΠΎΠ±Π°Π»ΡŒΠ½Π°Ρ пСрСмСнная

Π“Π»ΠΎΠ±Π°Π»ΡŒΠ½Π°Ρ пСрСмСнная опрСдСляСтся Π²Π½Π΅ любого Π±Π»ΠΎΠΊΠ°, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ²-if, ΠΈ Ρ‚ΠΎΠΌΡƒ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅. Доступ ΠΊ глобальной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ Π³Π΄Π΅ ΡƒΠ³ΠΎΠ΄Π½ΠΎ Π² классС. Рассмотрим ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€.

# создаСм класс Car class Car: message1 = «Π”Π²ΠΈΠ³Π°Ρ‚Π΅Π»ΡŒ Π·Π°Π²Π΅Π΄Π΅Π½» def start(self): message2 = «ΠΠ²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ Π·Π°Π²Π΅Π΄Π΅Π½» return message2 car_a = Car() print(car_a.message1)

# создаСм класс Car

class Car:Β Β 

Β Β Β Β message1 = «Π”Π²ΠΈΠ³Π°Ρ‚Π΅Π»ΡŒ Π·Π°Π²Π΅Π΄Π΅Π½»

Β 

Β Β Β Β def start(self):

Β Β Β Β Β Β Β Β message2 = «ΠΠ²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ Π·Π°Π²Π΅Π΄Π΅Π½»

Β Β Β Β Β Β Β Β return message2

Β 

car_a = Car()Β Β 

print(car_a.message1)

Π’ этом скриптС ΠΌΡ‹ создали Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ message1 ΠΈ Π²Ρ‹Π²Π΅Π»ΠΈ Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π° экран. Π’ Π²Ρ‹Π΄Π°Ρ‡Π΅ Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ message1, Π²Ρ‹Π²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π±Π΅Π· ошибки.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ сущСствуСт Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌΠΈ класса ΠΈ экзСмпляра, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΈ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ.

Атрибуты экзСмпляра ΠΈ класса ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ способом получСния доступа ΠΊ Π½ΠΈΠΌ. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Π΅Ρ‚ ΠΎΠ± использовании названия класса ΠΈ использовании названия экзСмпляра. Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΈ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ своими областями видимости, Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, мСстами, Π³Π΄Π΅ ΠΊ Π½ΠΈΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ доступ.

Доступ ΠΊ локальной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°. Π₯отя Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ экзСмпляров ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ собствСнным ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ словом.

ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ доступа

ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ доступа Π² Python ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ области видимости ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Π•ΡΡ‚ΡŒ Ρ‚Ρ€ΠΈ Ρ‚ΠΈΠΏΠ° ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² доступов Π² Python ООП:

  1. ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ β€” public;
  2. ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹ΠΉ β€” private;
  3. Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Ρ‹ΠΉ β€” protected.

Доступ ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ с ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°ΠΌΠΈ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ доступа ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ ΠΈΠ· любой Ρ‚ΠΎΡ‡ΠΊΠΈ Π²Π½Π΅ класса, доступ ΠΊ ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ класса, ΠΈ Π² случаС с Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Ρ‹ΠΌΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ, доступ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚Π°.

Для создания ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ прСфикс Π΄Π²ΠΎΠΉΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠΈΠ²Π°Π½ΠΈΠ΅ __ с Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ.

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

Π”Π°Π²Π°ΠΉΡ‚Π΅ взглянСм Π½Π° ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Π΅, ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹Π΅ ΠΈ Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π² дСйствии. Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ скрипт:

class Car: def __init__(self): print («Π”Π²ΠΈΠ³Π°Ρ‚Π΅Π»ΡŒ Π·Π°Π²Π΅Π΄Π΅Π½») self.name = «corolla» self.__make = «toyota» self._model = 1999

class Car:Β Β 

Β Β Β Β def __init__(self):

Β Β Β Β Β Β Β Β print («Π”Π²ΠΈΠ³Π°Ρ‚Π΅Π»ΡŒ Π·Π°Π²Π΅Π΄Π΅Π½»)

Β Β Β Β Β Β Β Β self.name = «corolla»

Β Β Β Β Β Β Β Β self.__make = «toyota»

Β Β Β Β Β Β Β Β self._model = 1999

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ создали простой класс Car с конструктором ΠΈ трСмя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ: name, make, ΠΈ model (Π½Π°Π·Π²Π°Π½ΠΈΠ΅, ΠΌΠ°Ρ€ΠΊΠ° ΠΈ модСль). ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ name являСтся ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎΠΉ, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ make ΠΈ model ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹ΠΌΠΈ ΠΈ Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Ρ‹ΠΌΠΈ, соотвСтствСнно.

Π”Π°Π²Π°ΠΉΡ‚Π΅ создадим ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса Car ΠΈ попытаСмся ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ name. Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ скрипт:

car_a = Car() print(car_a.name)

car_a = Car()Β Β 

print(car_a.name)

Π’Π°ΠΊ ΠΊΠ°ΠΊ name являСтся ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊ Π½Π΅ΠΉ доступ Π½Π΅ ΠΈΠ· класса. Π’ Π²Ρ‹Π΄Π°Ρ‡Π΅ Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ name, Π²Ρ‹Π²Π΅Π΄Π΅Π½Π½ΠΎΠ΅ Π² консоли.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ вывСсти Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ make. ВыполняСм ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ скрипт:

Π’ Π²Ρ‹Π΄Π°Ρ‡Π΅ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ ΠΎΠ± ошибкС:

AttributeError: ‘Car’ object has no attribute ‘make’

AttributeError: ‘Car’ object has no attribute ‘make’

ΠœΡ‹ рассмотрСли Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ основных ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… Π΄Π²ΡƒΡ… сСкциях. Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ столбах ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования:

  • ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ;
  • НаслСдованиС;
  • Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡ.

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

НаслСдованиС Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° наслСдованиС Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ ΠΆΠΈΠ·Π½ΠΈ, Π³Π΄Π΅ Ρ€Π΅Π±Π΅Π½ΠΎΠΊ наслСдуСт Ρ‚Π΅ ΠΈΠ»ΠΈ ΠΈΠ½Ρ‹Π΅ характСристики Π΅Π³ΠΎ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ Π² Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ Π΅Π³ΠΎ собствСнным характСристикам.

Π’ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ, наслСдованиС ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ IS-A. НапримСр, Π±ΠΎΠ»ΠΈΠ΄ β€” это транспорт. НаслСдованиС это ΠΎΠ΄Π½Π° ΠΈΠ· самых ΡƒΠ΄ΠΈΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ использованиС.

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

Рассмотрим Π½Π° ΠΎΡ‡Π΅Π½ΡŒ простой ΠΏΡ€ΠΈΠΌΠ΅Ρ€ наслСдования. Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ скрипт:

# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ класса Vehicle class Vehicle: def vehicle_method(self): print(«Π­Ρ‚ΠΎ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΠ· класса Vehicle») # Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ класса Car, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ наслСдуСт Vehicle class Car(Vehicle): def car_method(self): print(«Π­Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΠ· Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅Π³ΠΎ класса»)

# БозданиС класса Vehicle

class Vehicle:Β Β 

Β Β Β Β def vehicle_method(self):

Β Β Β Β Β Β Β Β print(«Π­Ρ‚ΠΎ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΠ· класса Vehicle»)

Β 

# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ класса Car, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ наслСдуСт Vehicle

class Car(Vehicle):Β Β 

Β Β Β Β def car_method(self):

Β Β Β Β Β Β Β Β print(«Π­Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΠ· Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅Π³ΠΎ класса»)

Π’ скриптС Π²Ρ‹ΡˆΠ΅ ΠΌΡ‹ создаСм Π΄Π²Π° класса: Vehicle ΠΈ Car, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ наслСдуСт класс Vehicle. Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ класс, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса Π²Π½ΡƒΡ‚Ρ€ΠΈ скобок, которая слСдуСт Π·Π° Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅Π³ΠΎ класса. Класс Vehicle содСрТит ΠΌΠ΅Ρ‚ΠΎΠ΄ vehicle_method(), Π° Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ класс содСрТит ΠΌΠ΅Ρ‚ΠΎΠ΄ car_method(). Однако, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ класс Car наслСдуСт класс Vehicle, ΠΎΠ½ Ρ‚Π°ΠΊΠΆΠ΅ наслСдуСт ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ vehicle_method().

Рассмотрим это Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ скрипт:

car_a = Car() car_a.vehicle_method() # Π’Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса

car_a = Car()Β Β 

car_a.vehicle_method() # Π’Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса

Π’ этом скриптС ΠΌΡ‹ создали ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса Car Π²Ρ‹Π·Ρ‹Π²Π°Π»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ vehicle_method() ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° класса Car. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ класс Car Π½Π΅ содСрТит Π½ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° vehicle_method(), Π½ΠΎ Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ унаслСдовал класс Vehicle, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит vehicle_method(), класс Car Ρ‚Π°ΠΊΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ. Π’Ρ‹Π΄Π°Ρ‡Π° выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π­Ρ‚ΠΎ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΠ· класса Vehicle

Π­Ρ‚ΠΎ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΠ· класса Vehicle

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

Π’ Python, Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ класс ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ нСсколько Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ…, ΠΈ, Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ, Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ класс ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ нСсколько Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΡ… классов. Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ сцСнарий. Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ скрипт:

# создаСм класс Vehicle class Vehicle: def vehicle_method(self): print(«Π­Ρ‚ΠΎ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΠ· класса Vehicle») # создаСм класс Car, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ наслСдуСт Vehicle class Car(Vehicle): def car_method(self): print(«Π­Ρ‚ΠΎ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΠ· класса Car») # создаСм класс Cycle, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ наслСдуСт Vehicle class Cycle(Vehicle): def cycleMethod(self): print(«Π­Ρ‚ΠΎ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΠ· класса Cycle»)

# создаСм класс Vehicle

class Vehicle:Β Β 

Β Β Β Β def vehicle_method(self):

Β Β Β Β Β Β Β Β print(«Π­Ρ‚ΠΎ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΠ· класса Vehicle»)

Β 

# создаСм класс Car, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ наслСдуСт Vehicle

class Car(Vehicle):Β Β 

Β Β Β Β def car_method(self):

Β Β Β Β Β Β Β Β print(«Π­Ρ‚ΠΎ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΠ· класса Car»)

Β 

# создаСм класс Cycle, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ наслСдуСт Vehicle

class Cycle(Vehicle):Β Β 

Β Β Β Β def cycleMethod(self):

Β Β Β Β Β Β Β Β print(«Π­Ρ‚ΠΎ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΠ· класса Cycle»)

Π’ этом скриптС, Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ класс Vehicle наслСдуСтся двумя Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΌΠΈ классами β€” Car ΠΈ Cycle. Оба Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… класса Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ доступ ΠΊ vehicle_method() Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса. ЗапуститС ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ скрипт, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ это Π»ΠΈΡ‡Π½ΠΎ:

car_a = Car() car_a.vehicle_method() # Π²Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса car_b = Cycle() car_b.vehicle_method() # Π²Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса

car_a = Car()Β Β 

car_a.vehicle_method() # Π²Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса

car_b = Cycle()Β Β 

car_b.vehicle_method() # Π²Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса

Π’ Π²Ρ‹Π΄Π°Ρ‡Π΅ Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ Π²Ρ‹Π΄Π°Ρ‡Ρƒ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° vehicle_method() Π΄Π²Π°ΠΆΠ΄Ρ‹, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅:

Π­Ρ‚ΠΎ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΠ· класса Vehicle Π­Ρ‚ΠΎ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΠ· класса Vehicle

Π­Ρ‚ΠΎ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΠ· класса Vehicle

Π­Ρ‚ΠΎ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΠ· класса Vehicle

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

class Camera: def camera_method(self): print(«Π­Ρ‚ΠΎ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΠ· класса Camera») class Radio: def radio_method(self): print(«Π­Ρ‚ΠΎ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΠ· класса Radio») class CellPhone(Camera, Radio): def cell_phone_method(self): print(«Π­Ρ‚ΠΎ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΠ· класса CellPhone»)

class Camera:Β Β 

Β Β Β Β def camera_method(self):

Β Β Β Β Β Β Β Β print(«Π­Ρ‚ΠΎ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΠ· класса Camera»)

Β 

class Radio:Β Β 

Β Β Β Β def radio_method(self):

Β Β Β Β Β Β Β Β print(«Π­Ρ‚ΠΎ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΠ· класса Radio»)

Β 

class CellPhone(Camera, Radio):Β Β 

Β Β Β Β  def cell_phone_method(self):

Β Β Β Β Β Β Β Β print(«Π­Ρ‚ΠΎ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΠ· класса CellPhone»)

Π’ скриптС Π²Ρ‹ΡˆΠ΅ ΠΌΡ‹ создали Ρ‚Ρ€ΠΈ класса: Camera, Radio, ΠΈ CellPhone. ΠšΠ»Π°ΡΡΡ‹ Camera ΠΈ Radio Π½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ΡΡ классом CellPhone. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ класс CellPhone Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ доступ ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ классов Camera ΠΈ Radio. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ скрипт ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π°Π΅Ρ‚ это:

cell_phone_a = CellPhone() cell_phone_a.camera_method() cell_phone_a.radio_method()

cell_phone_a = CellPhone()Β Β 

cell_phone_a.camera_method()Β Β 

cell_phone_a.radio_method()

Π’Ρ‹Π΄Π°Ρ‡Π° Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π­Ρ‚ΠΎ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΠ· класса Camera Π­Ρ‚ΠΎ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΠ· класса Radio

Π­Ρ‚ΠΎ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΠ· класса Camera

Π­Ρ‚ΠΎ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΠ· класса Radio

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

Π’Π΅Ρ€ΠΌΠΈΠ½ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ„ΠΎΡ€ΠΌ. Π’ контСкстС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования, ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° вСсти сСбя ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ.

ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ рСализуСтся Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΡƒ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, Π»ΠΈΠ±ΠΎ Ρ‡Π΅Ρ€Π΅Π· Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅.

ΠŸΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΌΠ΅Ρ‚ΠΎΠ΄Π°

ΠŸΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° относится ΠΊ свойству ΠΌΠ΅Ρ‚ΠΎΠ΄Π° вСсти сСбя ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ, Π² зависимости ΠΎΡ‚ количСства ΠΈΠ»ΠΈ Ρ‚ΠΈΠΏΠ° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ². ВзглянСм Π½Π° ΠΎΡ‡Π΅Π½ΡŒ простой ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°. Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ скрипт:

# создаСм класс Car class Car: def start(self, a, b=None): if b is not None: print (a + b) else: print (a)

# создаСм класс Car

class Car:Β Β 

Β Β  def start(self, a, b=None):

Β Β Β Β Β Β Β Β if b is not None:

Β Β Β Β Β Β Β Β Β Β Β Β print (a + b)

Β Β Β Β Β Β Β Β else:

Β Β Β Β Β Β Β Β Β Β Β Β print (a)

Π’ скриптС Π²Ρ‹ΡˆΠ΅, Ссли ΠΌΠ΅Ρ‚ΠΎΠ΄ start() вызываСтся ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ΠΉ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°, ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²Π΅Π΄Π΅Π½ Π½Π° экран. Однако, Ссли ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΄ΠΈΠΌ 2 Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ start(), ΠΎΠ½ внСсСт ΠΎΠ±Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° ΠΈ Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ суммы.

ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ с ΠΎΠ΄Π½ΠΈΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ для Π½Π°Ρ‡Π°Π»Π°:

car_a = Car() car_a.start(10)

car_a = Car()Β Β 

car_a.start(10)

Π’ Π²Ρ‹Π΄Π°Ρ‡Π΅ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ 10. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π΄Π²Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°:

Π’ Π²Ρ‹Π΄Π°Ρ‡Π΅ Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ 30.

ΠŸΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°

ΠŸΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° относится ΠΊ Π½Π°Π»ΠΈΡ‡ΠΈΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Π² Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅ΠΌ ΠΈ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ классах. ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° отличаСтся Π² Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ ΠΈ Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅ΠΌ классах, Π½ΠΎ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ остаСтся Ρ‚Π΅ΠΌ ΠΆΠ΅. Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° простой ΠΏΡ€ΠΈΠΌΠ΅Ρ€ пСрСопрСдСлСния ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π² Python.

# созданиС класса Vehicle class Vehicle: def print_details(self): print(«Π­Ρ‚ΠΎ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΠ· класса Vehicle») # созданиС класса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ наслСдуСт Vehicle class Car(Vehicle): def print_details(self): print(«Π­Ρ‚ΠΎ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΠ· класса Car») # созданиС класса Cycle, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ наслСдуСт Vehicle class Cycle(Vehicle): def print_details(self): print(«Π­Ρ‚ΠΎ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΠ· класса Cycle»)

# созданиС класса Vehicle

class Vehicle:Β Β 

Β Β Β Β def print_details(self):

Β Β Β Β Β Β Β Β print(«Π­Ρ‚ΠΎ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΠ· класса Vehicle»)

Β 

# созданиС класса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ наслСдуСт Vehicle

class Car(Vehicle):Β Β 

Β Β Β Β def print_details(self):

Β Β Β Β Β Β Β Β print(«Π­Ρ‚ΠΎ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΠ· класса Car»)

Β 

# созданиС класса Cycle, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ наслСдуСт Vehicle

class Cycle(Vehicle):Β Β 

Β Β Β Β def print_details(self):

Β Β Β Β Β Β Β Β print(«Π­Ρ‚ΠΎ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΠ· класса Cycle»)

Π’ скриптС Π²Ρ‹ΡˆΠ΅, классы Cycle ΠΈ Car Π½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ класс Vehicle. Класс Vehicle содСрТит ΠΌΠ΅Ρ‚ΠΎΠ΄ print_details(), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΌ классом. Π’Π΅ΠΏΠ΅Ρ€ΡŒ, Ссли Π²Ρ‹ Π²Ρ‹Π·ΠΎΠ²ΠΈΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ print_details(), Π²Ρ‹Π΄Π°Ρ‡Π° Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π²ΠΈΡΠ΅Ρ‚ΡŒ ΠΎΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ вызываСтся ΠΌΠ΅Ρ‚ΠΎΠ΄. Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ скрипт, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΡΡƒΡ‚ΡŒ Π½Π° Π΄Π΅Π»Π΅:

car_a = Vehicle() car_a. print_details() car_b = Car() car_b.print_details() car_c = Cycle() car_c.print_details()

car_a = Vehicle()Β Β 

car_a. print_details()

Β 

car_b = Car()Β Β 

car_b.print_details()

Β 

car_c = Cycle()Β Β 

car_c.print_details()

Π’Ρ‹Π΄Π°Ρ‡Π° Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Π²ΠΎΡ‚ Ρ‚Π°ΠΊ:

Π­Ρ‚ΠΎ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΠ· класса Vehicle Π­Ρ‚ΠΎ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΠ· класса Car Π­Ρ‚ΠΎ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΠ· класса Cycle

Π­Ρ‚ΠΎ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΠ· класса Vehicle

Π­Ρ‚ΠΎ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΠ· класса Car

Π­Ρ‚ΠΎ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΠ· класса Cycle

Как Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅, Π²Ρ‹Π΄Π°Ρ‡Π° отличаСтся, ΠΊ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ print_details() вызываСтся Ρ‡Π΅Ρ€Π΅Π· ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Π΅ классы ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса. Однако, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ классы ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса, ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π²Π΅Π΄ΡƒΡ‚ сСбя ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ.

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

Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡ β€” это Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ столп ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования. Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡ просто ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ скрытиС Π΄Π°Π½Π½Ρ‹Ρ…. Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΎΠ΄ΠΈΠ½ класс Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ прямого доступа ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ класса. ВмСсто этого, доступ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‡Π΅Ρ€Π΅Π· ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ доступ ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ класса Π² Python, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ доступа ΠΈ свойства. ΠœΡ‹ ΡƒΠΆΠ΅ ознакомились с Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ доступа. Π’ этом Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΌΡ‹ посмотрим, ΠΊΠ°ΠΊ Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ свойства.

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ модСль автомобиля Π΄ΠΎΠ»ΠΆΠ½Π° Π΄Π°Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ 2000 ΠΈ 2018 Π³ΠΎΠ΄ΠΎΠΌ. Если ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ пытаСтся ввСсти Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ мСньшС 2000 для ΠΌΠΎΠ΄Π΅Π»ΠΈ автомобиля, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ автоматичСски установится ΠΊΠ°ΠΊ 2000, ΠΈ Ссли Π±Ρ‹Π»ΠΎ Π²Π²Π΅Π΄Π΅Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π²Ρ‹ΡˆΠ΅ 2018, ΠΎΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΡΡ Π½Π° 2018. Если Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ находится ΠΌΠ΅ΠΆΠ΄Ρƒ 2000 ΠΈ 2018 β€” ΠΎΠ½ΠΎ остаСтся Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½Ρ‹ΠΌ. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ свойство Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΌΠΎΠ΄Π΅Π»ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ эту Π»ΠΎΠ³ΠΈΠΊΡƒ. ВзглянСм Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

# создаСм класс Car class Car: # создаСм конструктор класса Car def __init__(self, model): # Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ свойств. self.model = model # создаСм свойство ΠΌΠΎΠ΄Π΅Π»ΠΈ. @property def model(self): return self.__model # Π‘Π΅Ρ‚Ρ‚Π΅Ρ€ для создания свойств. @model.setter def model(self, model): if model < 2000: self.__model = 2000 elif model > 2018: self.__model = 2018 else: self.__model = model def getCarModel(self): return «Π“ΠΎΠ΄ выпуска ΠΌΠΎΠ΄Π΅Π»ΠΈ » + str(self.model) carA = Car(2088) print(carA.getCarModel())

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

# создаСм класс Car

class Car:

Β 

Β Β Β Β # создаСм конструктор класса Car

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

Β Β Β Β Β Β Β Β # Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ свойств.

Β Β Β Β Β Β Β Β self.model = model

Β 

Β Β Β Β # создаСм свойство ΠΌΠΎΠ΄Π΅Π»ΠΈ.

Β Β Β Β @property

Β Β Β Β def model(self):

Β Β Β Β Β Β Β Β return self.__model

Β 

Β Β Β Β # Π‘Π΅Ρ‚Ρ‚Π΅Ρ€ для создания свойств.

Β Β Β Β @model.setter

Β Β Β Β def model(self, model):

Β Β Β Β Β Β Β Β if model < 2000:

Β Β Β Β Β Β Β Β Β Β Β Β self.__model = 2000

Β Β Β Β Β Β Β Β elif model > 2018:

Β Β Β Β Β Β Β Β Β Β Β Β self.__model = 2018

Β Β Β Β Β Β Β Β else:

Β Β Β Β Β Β Β Β Β Β Β Β self.__model = model

Β 

Β Β Β Β def getCarModel(self):

Β Β Β Β Β Β Β Β return «Π“ΠΎΠ΄ выпуска ΠΌΠΎΠ΄Π΅Π»ΠΈ » + str(self.model)

Β 

carA = Car(2088)Β Β 

print(carA.getCarModel())

Бвойство ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚Ρ€ΠΈ части. Π’Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся модСлью Π² скриптС Π²Ρ‹ΡˆΠ΅. Π—Π°Ρ‚Π΅ΠΌ, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ свойство Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€ @property. НаконСц, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ установщик свойства, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся дСскриптором @model.setter Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Ρ‹ΡˆΠ΅.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, Ссли Π²Ρ‹ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅Ρ‚Π΅ ввСсти Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π²Ρ‹ΡˆΠ΅ 2018 Π² Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ, Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ установлСно Π½Π° 2018. Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ это. Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ скрипт:

car_a = Car(2088) print(car_a.get_car_model())

car_a = Car(2088)Β Β 

print(car_a.get_car_model())

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ 2088 ΠΊΠ°ΠΊ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для ΠΌΠΎΠ΄Π΅Π»ΠΈ, ΠΎΠ΄Π½Π°ΠΊΠΎ, Ссли Π²Ρ‹ Π²Π²Π΅Π΄Π΅Ρ‚Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΌΠΎΠ΄Π΅Π»ΠΈ Ρ‡Π΅Ρ€Π΅Π· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ get_car_model(), Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ 2018 Π² Π²Ρ‹Π΄Π°Ρ‡Π΅.

ПодвСдСм ΠΈΡ‚ΠΎΠ³ΠΈ

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ освоили Ρ‡Π°ΡΡ‚ΡŒ Π²Π°ΠΆΠ½Π΅ΠΉΡˆΠΈΡ… основ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования. Π­Ρ‚ΠΎΡ‚ Ρ‚ΠΈΠΏ программирования β€” ΠΎΠ΄ΠΈΠ½ ΠΈΠ· самых популярных ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌ.

Π’Π°ΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования отобраТаСтся Π² Ρ‚ΠΎΠΌ Ρ„Π°ΠΊΡ‚, Ρ‡Ρ‚ΠΎ большая Ρ‡Π°ΡΡ‚ΡŒ соврСмСнных языков программирования Ρ‚Π°ΠΊ ΠΈΠ»ΠΈ ΠΈΠ½Π°Ρ‡Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ ΠΈΠ»ΠΈ, ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅.

Являюсь администратором Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΠΎΡ€Ρ‚Π°Π»ΠΎΠ² ΠΏΠΎ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΡŽ языков программирования Python, Golang ΠΈ Kotlin. Π’ составС нСбольшой ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π΅Π΄ΠΈΠ½ΠΎΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊΠΎΠ², ΠΌΡ‹ занимаСмся популяризациСй языков программирования Π½Π° Ρ€ΡƒΡΡΠΊΠΎΡΠ·Ρ‹Ρ‡Π½ΡƒΡŽ Π°ΡƒΠ΄ΠΈΡ‚ΠΎΡ€ΠΈΡŽ. Π‘ΠΎΠ»ΡŒΡˆΠ°Ρ Ρ‡Π°ΡΡ‚ΡŒ статСй Π±Ρ‹Π»Π° Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Π½Π° Π½Π°ΠΌΠΈ Π½Π° русский язык ΠΈ распространяСтся бСсплатно.

E-mail: [email protected]

ΠžΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅
Universitatea Tehnică a Moldovei (utm.md)

  • 2014 β€” 2018 ВСхничСский УнивСрситСт ΠœΠΎΠ»Π΄ΠΎΠ²Ρ‹, ИВ-Π˜Π½ΠΆΠ΅Π½Π΅Ρ€. Π’Π΅ΠΌΠ° Π΄ΠΈΠΏΠ»ΠΎΠΌΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ «Автоматизация ΠΏΠΎΠΊΡƒΠΏΠΊΠΈ ΠΈ ΠΏΡ€ΠΎΠ΄Π°ΠΆΠΈ ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ²Π°Π»ΡŽΡ‚Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ тСхничСский Π°Π½Π°Π»ΠΈΠ·Β»
  • 2018 β€” 2020 ВСхничСский УнивСрситСт ΠœΠΎΠ»Π΄ΠΎΠ²Ρ‹, ΠœΠ°Π³ΠΈΡΡ‚Ρ€, ΠœΠ°Π³ΠΈΡΡ‚Π΅Ρ€ΡΠΊΠ°Ρ диссСртация Β«Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ° Π² кибСрпространствС ΠΏΠΎ Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ Π»ΠΈΡ†Π°Β»

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

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

ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌΠΈ понятиями ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования ΡΠ²Π»ΡΡŽΡ‚ΡΡ «ΠΊΠ»Π°ΡΡ» ΠΈ «ΠΎΠ±ΡŠΠ΅ΠΊΡ‚». Π­Ρ‚ΠΎ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹, Π° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ±ΠΎΠ±Ρ‰Π°ΡŽΡ‰ΠΈΠ΅ понятия. ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°ΡŽΡ‚ΡΡ ΠΎΡ‚ своих классов. Π’ языкС программирования Python Ρ‚Π°ΠΊΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ принято Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒ экзСмплярами.

НаслСдованиС, ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ ΠΈ инкапсуляция – основныС ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹, столпы ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования. НаслСдованиС ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ опрСдСлСния Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… классов, ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ – Ρ€Π°Π·Π½Ρ‹ΠΉ способ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅, инкапсуляция – сокрытиС ΠΈ объСдинСниС Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ². ΠšΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΡ рСализуСтся Ρ€Π΅ΠΆΠ΅, ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ создания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², составными частями ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π΄Ρ€ΡƒΠ³ΠΈΡ… классов.

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ΠΎΠΌ Π² ООП Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ класса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ вызываСтся автоматичСски ΠΏΡ€ΠΈ создании ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΎΡ‚ этого класса. Π’ Ρ‚ΠΎ ΠΆΠ΅ врСмя конструктор относится ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ². ИмСна Ρ‚Π°ΠΊΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Ρ€Π΅Π³Π»Π°ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ самим языком программирования, Π° ΠΈΡ… Π²Ρ‹Π·ΠΎΠ² происходит автоматичСски ΠΏΡ€ΠΈ участии ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π² Ρ‚Π΅Ρ… ΠΈΠ»ΠΈ ΠΈΠ½Ρ‹Ρ… опСрациях. НапримСр, слоТСнии, ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠΈ элСмСнта ΠΈ Π΄Ρ€.

Π˜Ρ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ – это особая Ρ€Π°Π·Π½ΠΎΠ²ΠΈΠ΄Π½ΠΎΡΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… коллСкциям Π²Ρ€ΠΎΠ΄Π΅ списка, Π½ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ хранят Π² сСбС вСсь Π½Π°Π±ΠΎΡ€ элСмСнтов, Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ. Π’ Python Π΅ΡΡ‚ΡŒ встроСнныС классы-Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΎΡ‚ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹. Однако Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ собствСнныС классы, Ρ‡ΡŒΠΈ экзСмпляры Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠ±Π»Π°Π΄Π°Ρ‚ΡŒ возмоТностями ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ².

ΠšΡƒΡ€Ρ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ 12 основных ΡƒΡ€ΠΎΠΊΠΎΠ² + 3 Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ…:

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

  2. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ классов ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²

  3. ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ класса – ΠΌΠ΅Ρ‚ΠΎΠ΄ __init__()

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

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

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

  7. ΠšΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΡ

  8. ΠŸΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ²

  9. ΠœΠΎΠ΄ΡƒΠ»ΠΈ ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹

  10. Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°

  11. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Python

  12. ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования

  13. БтатичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹

  14. Π˜Ρ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹

  15. Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹

ΠšΡƒΡ€Ρ с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ практичСских Ρ€Π°Π±ΠΎΡ‚ ΠΈ всСми ΡƒΡ€ΠΎΠΊΠ°ΠΌΠΈ:
android-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, pdf-вСрсия

ВСрсия курса: ΠΎΠΊΡ‚ΡΠ±Ρ€ΡŒ 2020.

ΠšΠ»Π°ΡΡΡ‹ Π² Python 3 ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ β€” ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ наслСдования ΠΈ Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ self

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

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

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ПО Π±Ρ‹Π» ΠΏΡ€ΠΈΠ·Π²Π°Π½ ΡΡ‚Π°Ρ‚ΡŒ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠΉ Π·Π°ΠΌΠ΅Π½ΠΎΠΉ для структурной ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΠΈ программирования. Богласно этой ΡƒΠΆΠ΅ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠ΅ΠΉ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ, каТдая ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ взятая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° являСтся иСрархичСской структурой ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… Π±Π»ΠΎΠΊΠΎΠ² ΠΊΠΎΠ΄Π°.

Π’ свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, ООП ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ нСсколько ΠΈΠ½ΠΎΠΉ способ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, прСдставляя ΠΈΡ… Π² Π²ΠΈΠ΄Π΅ совокупности ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΌΠ΅ΠΆΠ΄Ρƒ собой.

Благодаря Ρ‚Π°ΠΊΠΎΠΉ особСнности:

  • Π£Π»ΡƒΡ‡ΡˆΠ°Π΅Ρ‚ΡΡ восприятиС поставлСнной Π·Π°Π΄Π°Ρ‡ΠΈ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ Π½Π°Π΄ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ;
  • БокращаСтся количСство строк ΠΊΠΎΠ΄Π°;
  • Π£ΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ написания ΠΊΠΎΠ΄Π°.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹ΠΌΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ°ΠΌΠΈ ООП ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹: абстракция, инкапсуляция, наслСдованиС ΠΈ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ. Для создания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ… ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π² Π²ΠΈΠ΄Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅, Π° Ρ‚Π°ΠΊΠΆΠ΅ комплСксноС соблюдСниС всСх Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌ. ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· Π½ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΡ‚Ρ€Π΅Ρ‚ΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… ΠΈΠ· Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠΈ.

Рассмотрим основныС ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ООП:

  • Абстракция выполняСт ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ ООП, позволяя программисту Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ характСристиками ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ, благодаря ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡŽ классов.
  • Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΡΠΊΡ€Ρ‹Ρ‚ΡŒ Π΄Π΅Ρ‚Π°Π»ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ Π·Π°Ρ‰ΠΈΡ‚ΠΈΡ‚ΡŒ ΠΈΡ… свойства ΠΎΡ‚ постороннСго Π²ΠΌΠ΅ΡˆΠ°Ρ‚Π΅Π»ΡŒΡΡ‚Π²Π°.
  • НаслСдованиС Π΄Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°ΡΡˆΠΈΡ€ΡΡ‚ΡŒ ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ классы Π·Π° счСт автоматичСского пСрСноса ΠΈΡ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊ Π½ΠΎΠ²Ρ‹ΠΌ структурам Π΄Π°Π½Π½Ρ‹Ρ….
  • ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для создания Π΅Π΄ΠΈΠ½ΠΎΠ³ΠΎ интСрфСйса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ мноТСство Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ, зависящих ΠΎΡ‚ класса примСняСмого ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

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

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ класс Π² своСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово class, Π° послС Π½Π΅Π³ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ имя для создаваСмой структуры Π΄Π°Π½Π½Ρ‹Ρ…, Π·Π°Π²Π΅Ρ€ΡˆΠΈΠ² Π²Π²ΠΎΠ΄ вставкой двоСточия. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ дСмонстрируСт Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΡŽ пустого класса с ΠΈΠΌΠ΅Π½Π΅ΠΌ Example. Как ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Π² Π½Π΅ΠΌ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ отсутствуСт какая-Π»ΠΈΠ±ΠΎ информация.

class Example:
    pass
example = Example()

НСсмотря Π½Π° пустоС Ρ‚Π΅Π»ΠΎ класса Example, Π½Π° Π΅Π³ΠΎ основС ΡƒΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‰ΠΈΠΉ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ. ПослСдняя строка ΠΊΠΎΠ΄Π°, находящСгося Π²Ρ‹ΡˆΠ΅, прСдставляСт собой ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° с ΠΈΠΌΠ΅Π½Π΅ΠΌ example ΠΈ Ρ‚ΠΈΠΏΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ… Example. Π—Π΄Π΅ΡΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ присваивания, Π° Ρ‚Π°ΠΊΠΆΠ΅ пустыС ΠΊΡ€ΡƒΠ³Π»Ρ‹Π΅ скобки послС названия класса, прямо ΠΊΠ°ΠΊ Π² Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‰Π΅Π³ΠΎ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ².

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ² Π½ΠΎΠ²Ρ‹ΠΉ класс, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ сколько ΡƒΠ³ΠΎΠ΄Π½ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π½Π° Π΅Π³ΠΎ основС. Как ΡƒΠΆΠ΅ Π±Ρ‹Π»ΠΎ сказано Π²Ρ‹ΡˆΠ΅, такая структура Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π² сСбя Π½Π΅ΠΊΠΈΠ΅ свойства, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Π΄Π΅Π»Π΅Π½ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ экзСмпляр класса. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ простой ΠΏΡ€ΠΈΠΌΠ΅Ρ€ класса ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Python 3. Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ описываСтся класс ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Data со строкой word ΠΈ числом number.

class Data:
    word = "Python"
    number = 3
data = Data()
print(data.word + " " + str(data.number))

Python 3

Если ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, основанный Π½Π° классС Data, Ρ‚ΠΎ ΠΎΠ½ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ ΠΎΠ±Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡ… значСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π±Ρ‹Π» сгСнСрирован ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ data. ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Π΅Π³ΠΎ полям с ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ word ΠΈ number ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Ρ‚ΠΎΡ‡ΠΊΠΈ, Π²Ρ‹Π·Π²Π°Π² Π΅Π³ΠΎ Ρ‡Π΅Ρ€Π΅Π· экзСмпляр класса. Ѐункция print ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ вывСсти значСния ΠΏΠΎΠ»Π΅ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° data Π½Π° экран. НС стоит Π·Π°Π±Ρ‹Π²Π°Ρ‚ΡŒ ΠΈ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ число слСдуСт привСсти ΠΊ строчному Π²ΠΈΠ΄Ρƒ для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ print вмСстС с тСкстовым Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ.

Помимо ΠΏΠΎΠ»Π΅ΠΉ, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ класс ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π² сСбя ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Π½Π°Π΄Π΅Π»Π΅Π½Ρ‹ всС Π΅Π³ΠΎ экзСмпляры. Π’Ρ‹Π·Π²Π°Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Ρ‡Π΅Ρ€Π΅Π· созданный ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Π΅Π³ΠΎ полям, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‚ΠΎΡ‡ΠΊΠΈ. Π”Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ дСмонстрируСт класс Data с Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ sayHello, которая Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ тСкст Π½Π° экран.

class Data:
    def sayHello(self):
        print("Hello World!")
data = Data()
data.sayHello()

Hello World!

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ sayHello, Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΠΉ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΠΎΠΌΡƒ классу Data. ПослС этого ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Ρ‡Π΅Ρ€Π΅Π· сгСнСрированный экзСмпляр с ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ data, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ вывСсти нСбольшоС тСкстовоС сообщСниС.

АргумСнт self

Рассмотрим Π·Π°Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ΅Π½ ΠΈ Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ self Π² функциях Python. Как ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, СдинствСнным Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠΌ для ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΈΠ· класса являСтся ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово self. ΠŸΠΎΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π² ΠΊΠ°ΠΆΠ΄ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Π΅Π΅ Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅. Π’Π°ΠΊΠΆΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этого ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ доступ ΠΊ полям класса Π² описываСмом ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅. Self Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ замСняСт ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

class Dog:
    name = "Charlie"
    noise = "Woof!"
    def makeNoise(self):
        print(self.name + " says: " + self.noise + " " + self.noise)
dog = Dog()
dog.makeNoise()

Charlie says: Woof! Woof!

Π’Π²Π΅Ρ€Ρ…Ρƒ прСдставлСн класс Dog, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠΉ собаку. Он ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ полями name (имя) со стартовым Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Β«CharlieΒ» ΠΈ noise (ΡˆΡƒΠΌ), содСрТащим Π·Π²ΡƒΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠ·Π΄Π°Π΅Ρ‚ ΠΆΠΈΠ²ΠΎΡ‚Π½ΠΎΠ΅. ΠœΠ΅Ρ‚ΠΎΠ΄ makeNoise заставляСт собаку Π»Π°ΡΡ‚ΡŒ, выдавая ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ сообщСниС Π½Π° экран. Для этого Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ print ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ доступа ΠΊ полям name ΠΈ noise. Π”Π°Π»Π΅Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ экзСмпляр класса Dog ΠΈ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Π½Π° Π½Π΅ΠΌ makeNoise.

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€

Π’ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… ΠΊΠΎΠ΄Π° всС создаваСмыС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π»ΠΈ значСния для своих ΠΏΠΎΠ»Π΅ΠΉ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΈΠ· класса, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Π±Ρ‹Π»ΠΈ Π·Π°Π΄Π°Π½Ρ‹ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅ любого ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° доступа ΠΊ свойствам ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Но сущСствуСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π·Π°Ρ€Π°Π½Π΅Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ поля для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π·Π°Π΄Π°Π² ΠΈΡ… Π²ΠΎ врСмя Π΅Π³ΠΎ создания. Для этой Ρ†Π΅Π»ΠΈ Π² ООП ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ конструктор, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ конструктора Π²ΠΎ врСмя ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° класса Dog.

class Dog:
    def __init__(self, name, breed):
        self.name = name
        self.breed = breed
dog = Dog("Max", "German Shepherd")
print(dog.name + " is "+ dog.breed)

Max is German Shepherd

Π’Π½Π΅ΡˆΠ½Π΅ конструктор ΠΏΠΎΡ…ΠΎΠΆ Π½Π° ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΎΠ΄Π½Π°ΠΊΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Π΅Π³ΠΎ явным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ нСльзя. ВмСсто этого ΠΎΠ½ автоматичСски срабатываСт ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° создаСт Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ для класса, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ½ располоТСн. Имя Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ конструктора задаСтся Π² Π²ΠΈΠ΄Π΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° __init__. ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌΡ‹Π΅ ΠΈΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ полям Π±ΡƒΠ΄ΡƒΡ‰Π΅Π³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, воспользовавшись ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ словом self, ΠΊΠ°ΠΊ Π² Π²Ρ‹ΡˆΠ΅ΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, класс Dog содСрТит Π΄Π²Π° поля: name (имя) ΠΈ breed (ΠΏΠΎΡ€ΠΎΠ΄Π°). ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ для измСнСния этих свойств Π²ΠΎ врСмя ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ dog. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ класс содСрТит Π² сСбС ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅ ΠΎΠ΄ΠΈΠ½ конструктор, Ссли Π½ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ… Π½Π΅ Π±Ρ‹Π»ΠΎ Π·Π°Π΄Π°Π½ΠΎ явно. Однако Π² Ρ‚ΠΎΠΌ случаС, ΠΊΠΎΠ³Π΄Π° программист добавляСт Π² свой класс конструктор с Π½Π΅ΠΊΠΈΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ, конструктор, Π½Π΅ ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‰ΠΈΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ, Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠΌ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ, Π½ΡƒΠΆΠ½ΠΎ явно ΠΏΡ€ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ Π΅Π³ΠΎ Π² классС.

ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠΉ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ ООП являСтся абстракция, благодаря ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ частныС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π½Π° основС ΠΎΠ±Ρ‰Π΅Π³ΠΎ класса, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ абстрактного понятия, Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΊΠ°ΠΊ собака, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ своС имя, ΠΏΠΎΡ€ΠΎΠ΄Ρƒ, вСс, рост.

ДСструктор

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

class Data:
    def __del__(self):
        print "The object is destroyed"
data = Data()
del(data)

The object is destroyed

Как ΠΈ конструктор, дСструктор ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π½Π΅ΠΊΠΈΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΠΊΠΎΠ΄, ΡΠΎΠΎΠ±Ρ‰Π°ΡŽΡ‰ΠΈΠΉ ΠΎΠ± ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΌ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°. Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ создаСтся экзСмпляр класса Data ΠΈ вызываСтся Π΅Π³ΠΎ дСструктор, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΠΉ Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° сам ΠΎΠ±ΡŠΠ΅ΠΊΡ‚.

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

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ΄Π½ΠΎΠΌΡƒ классу Π²Ρ‹ΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ Π² качСствС наслСдника для Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ, пСрСнимая Ρ‚Π΅ΠΌ самым Π΅Π³ΠΎ свойства ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, являСтся Π²Π°ΠΆΠ½ΠΎΠΉ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ ООП.

Благодаря этой Π²Π°ΠΆΠ½ΠΎΠΉ особСнности ΠΏΡ€ΠΎΠΏΠ°Π΄Π°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ пСрСписывания ΠΊΠΎΠ΄Π° для ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… ΠΏΠΎ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ классов.

ΠŸΡ€ΠΈ наслСдовании классов Π² Python ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ слСдуСт ΡΠΎΠ±Π»ΡŽΠ΄Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎ условиС: класс-наслСдник Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ собой Π±ΠΎΠ»Π΅Π΅ частный случай класса-родитСля. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ показываСтся ΠΊΠ°ΠΊ класс Person (Π§Π΅Π»ΠΎΠ²Π΅ΠΊ) наслСдуСтся классом Worker (Π Π°Π±ΠΎΡ‚Π½ΠΈΠΊ). ΠŸΡ€ΠΈ описании подкласса Π² Python, имя Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса записываСтся Π² ΠΊΡ€ΡƒΠ³Π»Ρ‹Ρ… скобках.

class Person:
    name = "John"
class Worker(Person):
    wage = 2000
human = Worker()
print(human.name + " earns $" + str(human.wage))

John earns $2000

Person содСрТит ΠΏΠΎΠ»Π΅ name (имя), ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ пСрСдаСтся классу Worker, ΠΈΠΌΠ΅ΡŽΡ‰Π΅ΠΌΡƒ свойство wage (заработная ΠΏΠ»Π°Ρ‚Π°). ВсС условия наслСдования ΡΠΎΠ±Π»ΡŽΠ΄Π΅Π½Ρ‹, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΠΊ являСтся Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠΎΠΌ ΠΈ Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ ΠΈΠΌΠ΅Π½Π΅ΠΌ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ, создав экзСмпляр класса Worker ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ human, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ свободный доступ ΠΊ полям ΠΈΠ· Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ структуры Π΄Π°Π½Π½Ρ‹Ρ….

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

ΠΠ°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ класс, Π½ΠΎ ΠΈ нСсколько ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ, обрСтая Ρ‚Π΅ΠΌ самым ΠΈΡ… свойства ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹. Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ класс Dog (Π‘ΠΎΠ±Π°ΠΊΠ°) выступаСт Π² Ρ€ΠΎΠ»ΠΈ подкласса для Animal (Π–ΠΈΠ²ΠΎΡ‚Π½ΠΎΠ΅) ΠΈ Pet (ΠŸΠΈΡ‚ΠΎΠΌΠ΅Ρ†), ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ²Π»ΡΡ‚ΡŒΡΡ ΠΈ Ρ‚Π΅ΠΌ, ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌ. ΠžΡ‚ Animal Dog ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ ΡΠΏΠ°Ρ‚ΡŒ (ΠΌΠ΅Ρ‚ΠΎΠ΄ sleep), Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Pet Π΄Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ³Ρ€Π°Ρ‚ΡŒ с хозяином (ΠΌΠ΅Ρ‚ΠΎΠ΄ play). Π’ свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, ΠΎΠ±Π° Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΡ… класса унаслСдовали ΠΏΠΎΠ»Π΅ name ΠΎΡ‚ Creature (Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅). Класс Dog Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» это свойство ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ.

class Creature:
    def __init__(self, name):
        self.name = name
class Animal(Creature):
    def sleep(self):
        print(self.name + " is sleeping")
class Pet(Creature):
    def play(self):
        print(self.name + " is playing")
class Dog(Animal, Pet):
    def bark(self):
        print(self.name + " is barking")
beast = Dog("Buddy")
beast.sleep()
beast.play()
beast.bark()

Buddy is sleeping
Buddy is playing
Buddy is barking

Π’ Π²Ρ‹ΡˆΠ΅ΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ создаСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса Dog, ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‰ΠΈΠΉ имя Π² конструкторС. Π—Π°Ρ‚Π΅ΠΌ ΠΏΠΎ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ sleep (ΡΠΏΠ°Ρ‚ΡŒ), play (ΠΈΠ³Ρ€Π°Ρ‚ΡŒ) ΠΈ bark (Π»Π°ΡΡ‚ΡŒ), Π΄Π²ΠΎΠ΅ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π±Ρ‹Π»ΠΈ унаслСдованы. Π‘ΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ Π»Π°ΡΡ‚ΡŒ являСтся ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ собаки, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π½Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΆΠΈΠ²ΠΎΡ‚Π½ΠΎΠ΅ ΠΈΠ»ΠΈ домашний ΠΏΠΈΡ‚ΠΎΠΌΠ΅Ρ† ΡƒΠΌΠ΅Π΅Ρ‚ это Π΄Π΅Π»Π°Ρ‚ΡŒ.

АбстрактныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² ООП присутствуСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса, ΠΈΠ½ΠΎΠ³Π΄Π° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π² спСцифичСской Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ². Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΌΠΎΠΆΠ½ΠΎ привСсти ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄, Π³Π΄Π΅ классы Dog (Π‘ΠΎΠ±Π°ΠΊΠ°) ΠΈ Cat (Кошка) ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΠΎΡ‚ΠΎΠΌΠΊΠ°ΠΌΠΈ класса Animal (Π–ΠΈΠ²ΠΎΡ‚Π½ΠΎΠ΅). Как ΠΈ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΎ, ΠΎΠ½ΠΈ ΠΎΠ±Π° Π½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ makeNoise (ΡˆΡƒΠΌΠ΅Ρ‚ΡŒ), ΠΎΠ΄Π½Π°ΠΊΠΎ Π² Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ классС для Π½Π΅Π³ΠΎ Π½Π΅ сущСствуСт Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ.

ВсС ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΆΠΈΠ²ΠΎΡ‚Π½ΠΎΠ΅ прСдставляСт собой абстрактноС понятиС, Π° Π·Π½Π°Ρ‡ΠΈΡ‚ Π½Π΅ способно ΠΈΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ Π·Π²ΡƒΠΊ. Однако для собаки ΠΈ кошки данная ΠΊΠΎΠΌΠ°Π½Π΄Π° Π·Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ ΠΈΠΌΠ΅Π΅Ρ‚ общСпринятоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ makeNoise ΠΈΠ· Animal являСтся абстрактным, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ собствСнного Ρ‚Π΅Π»Π° Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ.

class Animal:
    def __init__(self, name):
        self.name = name
    def makeNoise(self):
        pass
class Dog(Animal):
    def makeNoise(self):
        print(self.name + " says: Woof!")
class Cat(Animal):
    def makeNoise(self):
        print(self.name + " says: Meow!")
dog = Dog("Baxter")
cat = Cat("Oliver")
dog.makeNoise()
cat.makeNoise()

Baxter says: Woof!
Oliver says: Meow!

Как Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°, ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΈ Dog ΠΈ Cat ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ makeNoise, послС Ρ‡Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ Π΅Π³ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠΎ-своСму. Π’ этом Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΡΡƒΡ‚ΡŒ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠ°, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅Π³ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ…ΠΎΠ΄ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° исходя ΠΈΠ· Π½ΡƒΠΆΠ΄ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ класса. ΠŸΡ€ΠΈ этом Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Ρƒ Π½Π΅Π³ΠΎ остаСтся ΠΎΠ±Ρ‰ΠΈΠΌ для всСх наслСдников, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΏΡƒΡ‚Π°Π½ΠΈΡ†Ρ‹ с ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ.

БтатичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹

Π’ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… всС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ классов Π²Ρ‹Π·Ρ‹Π²Π°Π»ΠΈΡΡŒ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ… ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Ρ‚ΠΈΠΏ. Однако ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‚Π°ΠΊΠΈΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠΌ Π½Π΅ΡƒΠ΄ΠΎΠ±Π½ΠΎ, ΠΊΠΎΠ³Π΄Π° Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π½Π΅Ρ‚ Π½ΡƒΠΆΠ΄Ρ‹ Π² ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ ΠΊΠ°ΠΊΠΈΠΌ-Π»ΠΈΠ±ΠΎ спСцифичСским свойствам класса. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Π΅ΡΡ‚ΡŒ опрСдСлСнная структура Math, содСрТащая Π² сСбС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ для арифмСтичСских вычислСний. ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π΅Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ создавая ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Ссли ΠΎΠ½ΠΈ ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹, ΠΊΠ°ΠΊ статичСскиС. Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ Π² классС ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΊΠ°ΠΊ статичСский, Π² Python ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€ @staticmethod.

class Math:
    @staticmethod
    def inc(x):
        return x + 1
    @staticmethod
    def dec(x):
        return x - 1
print(Math.inc(10), Math.dec(10))

(11, 9)

Π’ Π²Ρ‹ΡˆΠ΅ΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ класс Math Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя Π΄Π²Π° статичСских ΠΌΠ΅Ρ‚ΠΎΠ΄Π°: inc, Π±Π΅Ρ€ΡƒΡ‰ΠΈΠΉ число Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΉ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ, ΠΈ dec, Π΄Π΅Π»Π°ΡŽΡ‰ΠΈΠΉ всС Ρ‚ΠΎ ΠΆΠ΅ самоС, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚. Π’Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΎΠ±Π° этих ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Ρ‚ΠΎΡ‡ΠΊΠΈ, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Π½ΠΈ класса Math, Π³Π΄Π΅ ΠΎΠ½ΠΈ Π±Ρ‹Π»ΠΈ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹.

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ доступа

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

Π’ Ρ‚Π°ΠΊΠΎΠΉ ситуации ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π΅Ρ‰Π΅ ΠΎΠ΄Π½Π° ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ ООП ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ инкапсуляция. Она прСдписываСт ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹Ρ… свойств класса, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ отсутствуСт доступ Π·Π° Π΅Π³ΠΎ ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ. Для управлСния содСрТимым ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΈΠΌΠ΅Π½ΡƒΠ΅ΠΌΡ‹Π΅ getter (Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅) ΠΈ setter (устанавливаСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅).

class Cat:
    __name = "Kitty"
    def get_name(self):
        return self.__name
    def set_name(self, name):
        self.__name = name
cat = Cat()
print(cat.get_name())
cat.set_name("Misty")
print(cat.get_name())

Kitty
Misty

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΏΠΎΠ»Π΅ΠΉ, слСдуСт Π·Π°Π΄Π°Ρ‚ΡŒ для Π½ΠΈΡ… имя, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰Π΅Π΅ΡΡ с Π΄Π²ΠΎΠΉΠ½ΠΎΠ³ΠΎ подчСркивания. Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, продСмонстрированном Π²Ρ‹ΡˆΠ΅, класс Cat (Кошка) ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΎΠ΅ свойство __name (имя), Π° Ρ‚Π°ΠΊΠΆΠ΅ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ get_name ΠΈ set_name. ΠžΡ‚Π»ΠΈΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ‡Π΅Ρ€Ρ‚ΠΎΠΉ Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° являСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Ρ€Π°ΠΌΠΊΠΈ для Π²Π²ΠΎΠ΄ΠΈΠΌΡ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. НапримСр, ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡ€Π΅Ρ‚ΠΈΡ‚ΡŒ Π²Π²ΠΎΠ΄ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ числа ΠΈΠ»ΠΈ пустой строки.

Бвойства классов

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° свойств класса ΠΌΠΎΠΆΠ½ΠΎ внСсти ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²ΠΊΠΈ Π² Ρ€Π°Π±ΠΎΡ‚Ρƒ с ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ Ρ‚ΠΎΡ‡ΠΊΠΈ, присвоив Π΅ΠΌΡƒ собствСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ прСдставлСн класс с ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹ΠΌ ΠΏΠΎΠ»Π΅ΠΌ x, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ написаны getter ΠΈ setter. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ присвоСния полю x ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ значСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ property, ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‰Π΅ΠΉ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈΠΌΠ΅Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Ρ‚ΠΎΡ‡ΠΊΠΈ согласно своим Π½ΡƒΠΆΠ΄Π°ΠΌ.

class Data:
    def __init__(self, x):
        self.__set_x(x)
    def __get_x(self):
        print("Get X")
        return self.__x
    def __set_x(self, x):
        self.__x = x
        print("Set X")
    x = property(__get_x, __set_x)
data = Data(10)
print(data.x)
data.x = 20
print(data.x)

Set X
Get X
10
20

Как Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² выполнСния ΠΊΠΎΠ΄Π°, ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ __get_x ΠΈ __set_x Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Ρ‚ΠΎΡ‡ΠΊΠΈ, Π²Ρ‹Π·Ρ‹Π²Π°ΡΡΡŒ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, упрощаСтся написаниС ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ свойств ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ²Ρ‹ΡˆΠ°Π΅Ρ‚ΡΡ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ бСзопасности Π΄Π°Π½Π½Ρ‹Ρ….

ΠŸΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ²

Для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… Π² языках программирования ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, арифмСтичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… Π·Π½Π°ΠΊΠΎΠ² плюс, минус, ΡƒΠΌΠ½ΠΎΠΆΠΈΡ‚ΡŒ, Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ. Однако ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с собствСнными Ρ‚ΠΈΠΏΠ°ΠΌΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π²ΠΏΠΎΠ»Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΠΎΠΌΠΎΡ‰ΡŒ этих ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ². Благодаря ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ функциям, ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΏΠΎΠ΄ свои Π·Π°Π΄Π°Ρ‡ΠΈ.

Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ создаСтся класс Point (Ρ‚ΠΎΡ‡ΠΊΠ°), ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‰ΠΈΠΉ двумя полями: x ΠΈ y. Для сравнСния Π΄Π²ΡƒΡ… Ρ€Π°Π·Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π»ΠΈΠ±ΠΎ ΠΆΠ΅ просто ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€. Для этого потрСбуСтся ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ __eq__ Π² собствСнном классС, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π² Π½ΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² Π΅Π΅ Ρ‚Π΅Π»Π΅.

class Point:
    def __init__(self, x, y):
        self.x = x
        self.y = y
    def __eq__(self, other):
        return self.x == other.x and self.y == other.y
print(Point(2, 5) == Point(2, 5))
print(Point(3, 8) == Point(4, 6))

True
False

ΠŸΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ сравнСния Π΄Π²ΡƒΡ… ΠΏΠΎΠ»Π΅ΠΉ Ρƒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Благодаря этому появилась Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ Π΄Π²Π΅ Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΎΡ‡ΠΊΠΈ, ΠΏΠΎΠ»ΡŒΠ·ΡƒΡΡΡŒ всСго лишь ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚Ρ‹ выводится ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° print.

Аналогично ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ, ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² Python ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΡƒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² слоТСния, вычитания ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… арифмСтичСских ΠΈ логичСских дСйствий. Π’Π°ΠΊ ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΡƒ стандартных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ str ΠΈ len.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

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

#17 — ΠžΡΠ½ΠΎΠ²Ρ‹ ООП Python

Π’ ΡƒΡ€ΠΎΠΊΠ΅ ΠΌΡ‹ приступим ΠΊ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΡŽ ООП Π² языкС Python. ООП это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² основС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ являСтся созданиС класса, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° класса. ΠœΡ‹ научимся ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ классы ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Π° Ρ‚Π°ΠΊΠΆΠ΅ создадим ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ поля для основного класса.

На Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΌ этапС ООП – это Ρ‚Ρ‘ΠΌΠ½Ρ‹ΠΉ лСс, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ нСпонятно ΠΈ слишком услоТнСно. На самом Π΄Π΅Π»Π΅ всё вовсС Π½Π΅ Ρ‚Π°ΠΊ. ΠŸΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌ Π°Π±ΡΡ‚Ρ€Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ спСцифичСских (нСпонятных) ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ ΠΈ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с ООП простыми словами.Β 

ООП простыми словами

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ всС ΡƒΡΠ²ΠΎΠΈΡ‚ΡŒ Π³ΠΎΡ€Π°Π·Π΄ΠΎ ΠΏΡ€ΠΎΡ‰Π΅, Ρ‚ΠΎ Π΄Π°Π²Π°ΠΉΡ‚Π΅ Π·Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€ возьмСм Ρ€ΠΎΠ±ΠΎΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ постараСмся ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ Π·Π° счёт классов Π² ООП.

Класс Π² случаС с Ρ€ΠΎΠ±ΠΎΡ‚ΠΎΠΌ – это Π΅Π³ΠΎ Ρ‡Π΅Ρ€Ρ‚Ρ‘ΠΆ. ЭкзСмпляром класса (ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ) Π½Π°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ†Π΅Π»Ρ‹ΠΉ Ρ€ΠΎΠ±ΠΎΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ создан Ρ‚ΠΎΡ‡Π½ΠΎ ΠΏΠΎ Ρ‡Π΅Ρ€Ρ‚Π΅ΠΆΡƒ.


НаслСдованиС – это Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… ΠΎΠΏΡ†ΠΈΠΉ ΠΊ Ρ‡Π΅Ρ€Ρ‚Π΅ΠΆΡƒ Ρ€ΠΎΠ±ΠΎΡ‚Π°. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Π±Π΅Ρ€Π΅ΠΌ стандартный Ρ‡Π΅Ρ€Ρ‚Ρ‘ΠΆ Ρ€ΠΎΠ±ΠΎΡ‚Π° ΠΈ дорисуСм ΠΊ Π½Π΅ΠΌΡƒ Π»Π°Π·Π΅Ρ€Ρ‹, ΠΊΡ€Ρ‹Π»ΡŒΡ ΠΈ Π±Ρ€ΠΎΠ½ΡŽ. ВсС эти дорисовки ΠΌΡ‹ сдСлаСм Π² классС наслСдникС, основной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ взят ΠΈΠ· Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса.

ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ – это ΠΎΠ±Ρ‰ΠΈΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» для всСх Ρ€ΠΎΠ±ΠΎΡ‚ΠΎΠ² ΠΈ Π½Π΅ Π²Π°ΠΆΠ½ΠΎ Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€ΠΎΠ±ΠΎΡ‚ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‡Π΅Π½ΡŒ сильно ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π°. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Π² Π³Π»Π°Π²Π½ΠΎΠΌ классС ΠΌΡ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ пСрСдвиТСния для всСх ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ€ΠΎΠ±ΠΎΡ‚ΠΎΠ². Π”Π°Π»Π΅Π΅ Π² классС наслСдникС ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π»Π΅Π²ΠΈΡ‚Π°Ρ†ΠΈΠΈ для Ρ€ΠΎΠ±ΠΎΡ‚Π°, Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΠΆΠ΅ классС ΡƒΠΊΠ°ΠΆΠ΅ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ пСрСдвиТСния ΠΏΠΎ Π²ΠΎΠ΄Π΅ ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΠ±Ρ‰ΠΈΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» Ρ‡Ρ‚ΠΎ записан Π² Π³Π»Π°Π²Π½ΠΎΠΌ Ρ‡Π΅Ρ€Ρ‚Π΅ΠΆΠ΅, Π½ΠΎ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ€ΠΎΠ±ΠΎΡ‚Π° (для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ наслСдника).

А инкапсуляция являСтся для нас Π±Ρ€ΠΎΠ½Ρ‘ΠΉ, Π·Π°Ρ‰ΠΈΡ‰Π°ΡŽΡ‰Π΅ΠΉ Ρ€ΠΎΠ±ΠΎΡ‚Π°. Под пластырСм Π±Ρ€ΠΎΠ½ΠΈ находятся уязвимыС элСмСнты, Π²Ρ€ΠΎΠ΄Π΅ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΎΠ² ΠΈ микросхСм. ПослС прикрытия Π±Ρ€Π΅ΡˆΠ΅ΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π±Ρ€ΠΎΠ½ΠΈ (protected ΠΈΠ»ΠΈ private), Ρ€ΠΎΠ±ΠΎΡ‚ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π·Π°Ρ‰ΠΈΡ‰Ρ‘Π½ ΠΎΡ‚ Π²Π½Π΅ΡˆΠ½ΠΈΡ… Π²ΠΌΠ΅ΡˆΠ°Ρ‚Π΅Π»ΡŒΡΡ‚Π². По сути, ΠΌΡ‹ Π΄Π΅Π»Π°Π΅ΠΌ доступ ΠΊΠΎ всСм полям лишь Π·Π° счёт ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², Ρ‚Π΅ΠΌ самым прямой доступ ΠΊ полю Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΊΡ€Ρ‹Ρ‚.

Π£ всСх классов ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ, ΠΊΠ°ΠΊ ΠΈ поля с конструкторами. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ класс позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ любоС количСство Ρ€Π°Π·Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², всС ΠΈΠ· Π½ΠΈΡ… ΠΈΠΌΠ΅ΡŽΡ‚ собствСнныС характСристики.

БозданиС классов

Для создания класса Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово class ΠΈ Π΄Π°Π»Π΅Π΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ для класса. ΠžΠ±Ρ‰Π΅ΠΏΡ€ΠΈΠ½ΡΡ‚ΠΎ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ названия классов с Π±ΡƒΠΊΠ²Ρ‹ Π² Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ рСгистрС, Π½ΠΎ Ссли этого Π½Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, Ρ‚ΠΎ ошибки Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚.

Π’ любом классС ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ поля (ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅), ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ (Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ), Π° Ρ‚Π°ΠΊΠΆΠ΅ конструкторы.

Π‘ΠΎΠ·Π΄Π°Π² Π½ΠΎΠ²Ρ‹ΠΉ класс ΠΈ помСстив Ρ‚ΡƒΠ΄Π° ΠΊΠ°ΠΊΡƒΡŽ-Π»ΠΈΠ±ΠΎ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π½Π° основС Π½Π΅Π³ΠΎ Π½ΠΎΠ²Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹. ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ доступ ΠΊΠΎ всСм характСристикам класса.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ простого класса ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π½ΠΈΠΆΠ΅:

class Book:
	pass # Класс ΠΌΠΎΠΆΠ΅Ρ‚ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ

На основС Ρ‚Π°ΠΊΠΎΠ³ΠΎ класса ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ мноТСство ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² Π΄Π°Π½Π½ΠΎΠΌ случаС Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΈΠ· сСбя ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΡƒΡŽ ΠΊΠ½ΠΈΠΆΠΊΡƒ. Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅.

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π½Π°ΠΌ потрСбуСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

obj_new = Some() # Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°
obj_second = Some() # Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ 2 ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°

ООП Π² Python – ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹, классы, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Π°Ρ‚Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅:Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ

ООП – самая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠ° программирования. Π­Ρ‚ΠΎ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΈ особый способ ΠΌΡ‹ΡˆΠ»Π΅Π½ΠΈΡ, ΠΈ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Π°Ρ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠ°. Π•Ρ‘ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡŽ ΠΏΡ€ΠΎΡ‰Π΅ всСго ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… ΠΈΠ· Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ ΠΆΠΈΠ·Π½ΠΈ. И это нСспроста. ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ содСрТимоС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ СстСствСнным для нашСго ΠΌΠΈΡ€Π° способом.

Π“Π»Π°Π²Π½Ρ‹ΠΌ понятиСм ООП являСтся понятиС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Π’ΠΎΠΎΠ±Ρ‰Π΅ говоря, Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ сущностСй Π½Π° ΠΏΠ»Π°Π½Π΅Ρ‚Π΅ ЗСмля – это Π½Π΅ΠΊΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹. И с Ρ‡Π°ΡΡ‚ΡŒΡŽ ΠΈΠ· Π½ΠΈΡ… ΠΌΡ‹ взаимодСйствуСм ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ программирования. Банковский счёт, пСрсонаТ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠΉ ΠΈΠ³Ρ€Ρ‹ ΠΈΠ»ΠΈ Π°Π½ΠΈΠΌΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ сайта – всё это Π»Π΅Π³ΠΊΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π² Π²ΠΈΠ΄Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². МоТно ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ позволяСт ΡΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² Π²ΠΈΠ΄Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ.

ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² со схоТими свойствами Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² классы. ИдСя класса Ρ‚Π°ΠΊΠΆΠ΅ являСтся ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΎΡΠ½ΠΎΠ²ΠΎΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‰ΠΈΡ… ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΉ ООП. Π‘ΠΎ стороны ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, класс – это всСго лишь Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…, Π½ΠΎ для программиста это ΠΊΡƒΠ΄Π° Π±ΠΎΠ»Π΅Π΅ глубокая абстрактная структура. Но ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Ρ‘ΠΌ ΡƒΠΆΠ΅ ΠΊ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚ΠΈΠΊΠ΅.

πŸ’β€β™‚οΈ Π˜Ρ‚Π°ΠΊ, ΠΌΡ‹ – Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΈΠ³Ρ€. Наша студия трудится Π½Π°Π΄ Π½ΠΎΠ²Ρ‹ΠΌ автосимулятором. Π’ ΠΈΠ³Ρ€Π΅ Π±ΡƒΠ΄ΡƒΡ‚ прСдставлСны Ρ€Π°Π·Π½Ρ‹Π΅ Π²ΠΈΠ΄Ρ‹ транспорта: Π»Π΅Π³ΠΊΠΎΠ²Ρ‹Π΅ Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΠΈ, Π³ΠΎΠ½ΠΎΡ‡Π½Ρ‹Π΅, Π³Ρ€ΡƒΠ·ΠΎΠ²Ρ‹Π΅ ΠΈ пассаТирскиС. ВсС ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΈΠΌ словом – автотранспорт. Π‘Π΄Π΅Π»Π°Π² это, ΠΌΡ‹ Π°Π±ΡΡ‚Ρ€Π°Π³ΠΈΡ€ΠΎΠ²Π°Π»ΠΈΡΡŒ ΠΎΡ‚ Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ ΠΈ, Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈ класс. ΠžΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ этого класса ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, ΠΊΠ°ΠΊ Π‘ΡŒΡŽΠΈΠΊ 1968-Π³ΠΎ Π³ΠΎΠ΄Π°, Ρ‚Π°ΠΊ ΠΈ Π³Ρ€ΡƒΠ·ΠΎΠ²ΠΎΠΉ Freightliner Columbia ΠΆΠ΅Π»Ρ‚ΠΎΠ³ΠΎ Ρ†Π²Π΅Ρ‚Π°.

Π£ класса Π΅ΡΡ‚ΡŒ свойства ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (Π² ООП ΠΈΡ… Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ).

  • Бвойства β€” это характСристики, присущиС Π΄Π°Π½Π½ΠΎΠΌΡƒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌΡƒ мноТСству ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².
  • ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ β€” Ρ‚Π΅ дСйствия, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ²Π΅Ρ€ΡˆΠ°Ρ‚ΡŒ.

Бвойствами класса «Π°Π²Ρ‚ΠΎΡ‚Ρ€Π°Π½ΡΠΏΠΎΡ€Ρ‚» ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€: Π³ΠΎΠ΄ выпуска, Π²ΠΈΠ΄ ΠΈ Ρ†Π²Π΅Ρ‚. На ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² это Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ: Π‘ΡŒΡŽΠΈΠΊ Π­Π»Π΅ΠΊΡ‚Ρ€Π° – это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса «ΠΠ²Ρ‚ΠΎΡ‚Ρ€Π°Π½ΡΠΏΠΎΡ€Ρ‚» со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ свойствами:

  • Π²ΠΈΠ΄ – Π»Π΅Π³ΠΊΠΎΠ²ΠΎΠΉ Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ;
  • Ρ†Π²Π΅Ρ‚ – Ρ‡Ρ‘Ρ€Π½Ρ‹ΠΉ;
  • Π³ΠΎΠ΄ выпуска – 1968.

МоТно ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ – это Π²ΠΏΠΎΠ»Π½Π΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ экзСмпляр класса

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

ΠœΡ‹ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌ ΠΈΠ³Ρ€Ρƒ, поэтому прСдполагаСтся, Ρ‡Ρ‚ΠΎ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ Π² Π½Π΅ΠΉ Π±ΡƒΠ΄ΡƒΡ‚ исправными. Π—Π½Π°Ρ‡ΠΈΡ‚, Π²ΠΏΠΎΠ»Π½Π΅ СстСствСнно, Ρ‡Ρ‚ΠΎ каТдая ΠΈΠ· Π½ΠΈΡ… ΠΌΠΎΠΆΠ΅Ρ‚ Π΅Ρ…Π°Ρ‚ΡŒ ΠΈ Ρ‚ΠΎΡ€ΠΌΠΎΠ·ΠΈΡ‚ΡŒ.

Π’ ΠŸΠΈΡ‚ΠΎΠ½Π΅ класс «ΠΠ²Ρ‚отранспорт» ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ:

# класс автотранспорт class MotorTransport(object): def __init__(self, color, year, auto_type): self.color = color self.year = year self.auto_type = auto_type # Ρ‚ΠΎΡ€ΠΌΠΎΠ·ΠΈΡ‚ΡŒ def stop(self): print("Pressing the brake pedal") # Π΅Ρ…Π°Ρ‚ΡŒ def drive(self): print('WRRRRRUM!')

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½ΠΈΠΊΡ‚ΠΎ Π½Π΅ ΠΏΠΎΠΌΠ΅ΡˆΠ°Π΅Ρ‚ Π½Π°ΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ ΠΊΡ€Π°ΡΠ½ΡƒΡŽ Ρ„Π΅Ρ€Ρ€Π°Ρ€ΠΈ. ΠŸΡƒΡΡ‚ΡŒ ΠΈ Π² симуляторС.

# создадим ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса Автотранспорт ferrari_testarossa = MotorTransport('Red', 1987, 'passenger car') # ΠΆΠΌΡ‘ΠΌ Π½Π° Π³Π°Π· ΠΈ Π²ΠΏΠ΅Ρ€Ρ‘Π΄! ferrari_testarossa.drive() > WRRRRRUM!

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ООП

Абстракция

Абстракция – это Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ основных, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π·Π½Π°Ρ‡ΠΈΠΌΡ‹Ρ… характСристик ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ второстСпСнных.

Π›ΡŽΠ±ΠΎΠΉ составной ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΌΠΈΡ€Π° – это абстракция. Говоря «Π½ΠΎΡƒΡ‚Π±ΡƒΠΊ», Π²Π°ΠΌ Π½Π΅ трСбуСтся Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠΈΡ… пояснСний, Π²Ρ€ΠΎΠ΄Π΅ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ это ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ пластика, ΠΌΠ΅Ρ‚Π°Π»Π»Π°, ТидкокристалличСского дисплСя ΠΈ микросхСм. Абстракция позволяСт ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅Ρ€Π΅Π»Π΅Π²Π°Π½Ρ‚Π½Ρ‹Π΅ Π΄Π΅Ρ‚Π°Π»ΠΈ, поэтому для нашСго сознания это ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π³Π»Π°Π²Π½Ρ‹Ρ… способов ΡΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒΡΡ со ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΌΠΈΡ€Π°. Если Π±, подходя ΠΊ Ρ…ΠΎΠ»ΠΎΠ΄ΠΈΠ»ΡŒΠ½ΠΈΠΊΡƒ, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Π»ΠΈ ΠΈΠΌΠ΅Ρ‚ΡŒ Π΄Π΅Π»ΠΎ с ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ ΠΌΠ΅Ρ‚Π°Π»Π»ΠΎΠΌ корпуса, пластиковыми Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ, лакокрасочным слоСм ΠΈ ΠΌΠΎΡ‚ΠΎΡ€ΠΎΠΌ, Π²Ρ‹ вряд Π»ΠΈ смогли Π±Ρ‹ Π΄ΠΎΡΡ‚Π°Ρ‚ΡŒ ΠΈΠ· ΠΌΠΎΡ€ΠΎΠ·ΠΈΠ»ΠΊΠΈ Π·Π°ΠΌΠΎΡ€ΠΎΠΆΠ΅Π½Π½ΡƒΡŽ ΠΊΠ»ΡƒΠ±Π½ΠΈΠΊΡƒ.

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

ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ΄Π΅ΠΈ. ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€: Ρƒ вас Π΅ΡΡ‚ΡŒ класс «ΠŸΠ΅Ρ€ΡΠΎΠ½Π°ΠΆ», Π° Ρƒ Π½Π΅Π³ΠΎ Π΅ΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ «ΠΡ‚Π°ΠΊΠΎΠ²Π°Ρ‚ΡŒ». Для Π²ΠΎΠΈΠ½Π° это Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ·Π½Π°Ρ‡Π°Ρ‚ΡŒ ΡƒΠ΄Π°Ρ€ ΠΌΠ΅Ρ‡ΠΎΠΌ, для Ρ€Π΅ΠΉΠ½Π΄ΠΆΠ΅Ρ€Π° – выстрСл ΠΈΠ· Π»ΡƒΠΊΠ°, Π° для волшСбника – Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ заклинания «ΠžΠ³Π½Π΅Π½Π½Ρ‹ΠΉ Π¨Π°Ρ€». Π’ сущности, всС эти Ρ‚Ρ€ΠΈ дСйствия – Π°Ρ‚Π°ΠΊΠ°, Π½ΠΎ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ.

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

Π­Ρ‚ΠΎ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ ΠΎΠ΄Π½ΠΎΠ³ΠΎ класса Ρ€Π°ΡΡˆΠΈΡ€ΡΡ‚ΡŒ понятиС Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ, ΠΈ Π³Π»Π°Π²Π½Ρ‹ΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ использования ΠΊΠΎΠ΄Π° Π² ООП. ВСрнёмся ΠΊ Π½Π°ΡˆΠ΅ΠΌΡƒ автосимулятору. На ΡƒΡ€ΠΎΠ²Π½Π΅ абстракции «ΠΠ²Ρ‚ΠΎΡ‚Ρ€Π°Π½ΡΠΏΠΎΡ€Ρ‚» ΠΌΡ‹ Π½Π΅ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π΅ΠΌ особСнности ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° транспортного срСдства, Π° рассматриваСм ΠΈΡ… «Π² Ρ†Π΅Π»ΠΎΠΌ». Если ΠΆΠ΅ Π±ΠΎΠ»Π΅Π΅ Π΄Π΅Ρ‚Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ ΠΏΡ€ΠΈΠ³Π»ΡΠ΄Π΅Ρ‚ΡŒΡΡ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊ Π³Ρ€ΡƒΠ·ΠΎΠ²ΠΈΠΊΠ°ΠΌ, Ρ‚ΠΎ окаТСтся, Ρ‡Ρ‚ΠΎ Ρƒ Π½ΠΈΡ… Π΅ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ свойства ΠΈ возмоТности, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅Ρ‚ Π½ΠΈ Ρƒ Π»Π΅Π³ΠΊΠΎΠ²Ρ‹Ρ…, Π½ΠΈ Ρƒ пассаТирских машин. Но, ΠΏΡ€ΠΈ этом, ΠΎΠ½ΠΈ всё Π΅Ρ‰Ρ‘ ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‚ всСми Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ характСристиками, присущими автотранспорту.

ΠœΡ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ класс «Π“Ρ€ΡƒΠ·ΠΎΠ²ΠΈΠΊ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся наслСдником «ΠΠ²Ρ‚ΠΎΡ‚Ρ€Π°Π½ΡΠΏΠΎΡ€Ρ‚Π°». ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ этого класса ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ всС ΠΏΡ€ΠΎΡˆΠ»Ρ‹Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ (Ρ†Π²Π΅Ρ‚, Π³ΠΎΠ΄ выпуска), Π½ΠΎ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅. Для Π³Ρ€ΡƒΠ·ΠΎΠ²ΠΈΠΊΠΎΠ² это ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹Ρ‚ΡŒ Π³Ρ€ΡƒΠ·ΠΎΠΏΠΎΠ΄ΡŠΡ‘ΠΌΠ½ΠΎΡΡ‚ΡŒ, снаряТСнная масса ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΆΠΈΠ»ΠΎΠ³ΠΎ отсСка Π² ΠΊΠ°Π±ΠΈΠ½Π΅. А ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΅ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρƒ Π³Ρ€ΡƒΠ·ΠΎΠ²ΠΈΠΊΠΎΠ², ΠΌΠΎΠ³Π»Π° Π±Ρ‹Ρ‚ΡŒ функция сцСплСния ΠΈ отцСплСния ΠΏΡ€ΠΈΡ†Π΅ΠΏΠ°.

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

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

Π’Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ для ΠΌΡƒΠ½ΠΈΡ†ΠΈΠΏΠ°Π»ΡŒΠ½Ρ‹Ρ… слуТб класс «ΠšΠ²Π°Ρ€Ρ‚ΠΈΡ€Π°». Π£ Π½Π΅Ρ‘ Π΅ΡΡ‚ΡŒ свойства Π²Ρ€ΠΎΠ΄Π΅ адрСса, ΠΌΠ΅Ρ‚Ρ€Π°ΠΆΠ° ΠΈ высоты ΠΏΠΎΡ‚ΠΎΠ»ΠΊΠΎΠ². И ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ· этих свойств ΠΈ, Π³Π»Π°Π²Π½ΠΎΠ΅, ΠΌΠ΅Ρ‚ΠΎΠ΄, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠΉ постановку Π½Π° ΡƒΡ‡Ρ‘Ρ‚ Π² РосрССстрС. Π­Ρ‚ΠΎ готовая концСпция, ΠΈ Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΡ‚ΠΎ-Ρ‚ΠΎ ΠΌΠΎΠ³ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ «ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Π΄Π²Π΅Ρ€ΡŒ» ΠΈ «ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ мСсто хранСния Π΄Π΅Π½Π΅Π³». Π­Ρ‚ΠΎ А) НСбСзопасно ΠΈ Π‘) Π˜Π·Π±Ρ‹Ρ‚ΠΎΡ‡Π½ΠΎ, Π° Ρ‚Π°ΠΊΠΆΠ΅, Π² Ρ€Π°ΠΌΠΊΠ°Ρ… Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ. Π Π°Π±ΠΎΡ‚Π½ΠΈΠΊΠ°ΠΌ РосрССстра Π½Π΅ трСбуСтся Π·Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ Π²Π°ΠΌ Π΄ΠΎΠΌΠΎΠΉ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ высоту ΠΏΠΎΡ‚ΠΎΠ»ΠΊΠΎΠ² – ΠΎΠ½ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ΠΌΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ сами ΠΈΠΌ прСдоставили.

Класс

— Π£ тСбя Π΅ΡΡ‚ΡŒ ΠΊΠ»ΡŽΡ‡? — Π›ΡƒΡ‡ΡˆΠ΅! Π£ мСня Π΅ΡΡ‚ΡŒ рисунок ΠΊΠ»ΡŽΡ‡Π°!

ΠšΠ»Π°ΡΡΡ‹, Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ смыслС, ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ Ρ‡Π΅Ρ€Ρ‚Π΅ΠΆΠ°ΠΌ: это Π½Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ сами ΠΏΠΎ сСбС, Π° ΠΈΡ… схСмы. Класс «Π±Π°Π½ΠΊΠΎΠ²ΡΠΊΠΈΡ… счСтов» ΠΈΠΌΠ΅Π΅Ρ‚ строго ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ для всСх Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹, Π½ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π² Π½Ρ‘ΠΌ – сами счСта – ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹.

Как Π² Python ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ класс

Π’ Python классы ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΏΠΎ смыслу Π½Π΅ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… языков. ΠΡŽΠ°Π½ΡΡ‹ Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Для создания класса Π² ΠŸΠΈΡ‚ΠΎΠ½Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ class, Π° Π·Π°Ρ‚Π΅ΠΌ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ имя. Π’ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΌ случаС, класс выглядит Ρ‚Π°ΠΊ:

class SimpleClass: pass

Для имСнования классов Π² Python ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΡΡ‚ΠΈΠ»ΡŒ «camel case», Π³Π΄Π΅ пСрвая Π±ΡƒΠΊΠ²Π° – заглавная.

LikeThis

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€

ΠœΠ΅Ρ‚ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ вызываСтся ΠΏΡ€ΠΈ создании ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Π² ООП зовётся конструктором. Он Π½ΡƒΠΆΠ΅Π½ для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. НапримСр, пустыС экзСмпляры класса «Π‘Ρ‚ΡƒΠ΄Π΅Π½Ρ‚» бСссмыслСнны, ΠΈ ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ хотя Π±Ρ‹ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ Π²Ρ€ΠΎΠ΄Π΅ ΠΈΠΌΠ΅Π½ΠΈ, Ρ„Π°ΠΌΠΈΠ»ΠΈΠΈ ΠΈ Π³Ρ€ΡƒΠΏΠΏΡ‹.

Π’ качСствС ΠŸΠΈΡ‚ΠΎΠ½ΠΎΠ²ΡΠΊΠΎΠ³ΠΎ конструктора выступаСт ΠΌΠ΅Ρ‚ΠΎΠ΄ __init__():

class Student: def __init__(self, name, surname, group): self.name = name self.surname = surname self.group = group alex = Student("Alex", "Ivanov", "admin")

Атрибуты класса

Π’Ρ‹ ΡƒΠΆΠ΅ поняли, Ρ‡Ρ‚ΠΎ Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ класса Π΅ΡΡ‚ΡŒ собствСнный Π½Π°Π±ΠΎΡ€ характСристик, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ. Π­Ρ‚ΠΈ свойства Π΅Ρ‰Π΅ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ полями ΠΈΠ»ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌΠΈ.

Поля ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ статичСскими ΠΈ динамичСскими:

  • БтатичСскиС поля (поля класса) ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±Π΅Π· создания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. А Π·Π½Π°Ρ‡ΠΈΡ‚, конструктор Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ΅Π½.
  • ДинамичСскиС поля (поля ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°) Π·Π°Π΄Π°ΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ конструктора, ΠΈ Ρ‚ΡƒΡ‚ ΡƒΠΆΠ΅, ΠΊΠ°ΠΊ Π²Ρ‹ Π²ΠΈΠ΄Π΅Π»ΠΈ, экзСмпляр Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ, Π° полям ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ значСния.
class MightiestWeapon: # статичСский Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ name = "Default name" def __init__(self, weapon_type): # динамичСский Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ self.weapon_type = weapon_type

☝️ ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ – статичСский ΠΈ динамичСский Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅ имя:

class MightiestWeapon: # статичСский Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ name = "Default name" def __init__(self, name): # динамичСский Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ self.name = name weapon = MightiestWeapon("sword") print(MightiestWeapon.name) print(weapon.name)

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса

ΠœΠ΅Ρ‚ΠΎΠ΄ – это функция класса.

НапримСр, Ρƒ всСх Π½Π°ΡƒΡ‡Π½ΠΎ-фантастичСских космичСских ΠΊΠΎΡ€Π°Π±Π»Π΅ΠΉ Π΅ΡΡ‚ΡŒ Π±ΠΎΡ€Ρ‚ΠΎΠ²ΠΎΠ΅ ΠΎΡ€ΡƒΠΆΠΈΠ΅. И ΠΎΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Ρ€Π΅Π»ΡΡ‚ΡŒ.

class SpaceShip: def atack(self): print('ΠŸΠΈΡƒ!') star_destroyer = SpaceShip() star_destroyer.atack() > ΠŸΠΈΡƒ!

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ self?

Аналог этого ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… языках – слово this. self – это всСго лишь ссылка Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ экзСмпляр класса.

🐈 ΠžΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ с котофСями:

  1. ВсС ΠΊΠΎΡ‚ΠΈΠΊΠΈ ΡƒΠΌΠ΅ΡŽΡ‚ ΠΌΡƒΡ€Π»Ρ‹ΠΊΠ°Ρ‚ΡŒ;
  2. Π­Ρ‚Π° ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π² классС ΠšΠΎΡ‚, ΠΊΠ°ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠœΡƒΡ€Ρ‡Π°Ρ‚ΡŒ;
  3. Π’Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ваш ΠΊΠΎΡ‚ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΠŸΡƒΡˆΠΎΠΊ ΠΏΠΎΠΌΡƒΡ€Ρ‡Π°Π»;
  4. Если ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ: ΠšΠΎΡ‚.ΠœΡƒΡ€Ρ‡Π°Ρ‚ΡŒ, Ρ‚ΠΎ ΠΌΡƒΡ€Π»Ρ‹ΠΊΠ°Ρ‚ΡŒ Π½Π°Ρ‡Π½ΡƒΡ‚ всС ΠΊΠΎΡ‚Ρ‹ Π²ΠΎ ВсСлСнной;
  5. Но Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π²Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ ΠΎΠ΄ΠΈΠ½ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ ΠΊΠΎΡ‚, Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΠ½Π°Ρ‡Π΅: self.ΠœΡƒΡ€Ρ‡Π°Ρ‚ΡŒ;
  6. Π‘Π΄Π΅Π»Π°Π½ΠΎ. ΠŸΡƒΡˆΠΎΠΊ ΠΌΡƒΡ€Π»Ρ‹ΠΊΠ°Π΅Ρ‚.

Π£Ρ€ΠΎΠ²Π½ΠΈ доступа Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²

Π’ ΠŸΠΈΡ‚ΠΎΠ½Π΅ Π½Π΅ сущСствуСт ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² доступа ΠΊ полям класса. ΠžΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΈΠ΅ Π°Π½Π°Π»ΠΎΠ³ΠΎΠ² связки public/private/protected ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΡƒΠΏΡƒΡ‰Π΅Π½ΠΈΠ΅ со стороны ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ° инкапсуляции.

Π”Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€Ρ‹

Π”Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€ – это функция-ΠΎΠ±Ρ‘Ρ€Ρ‚ΠΊΠ°. Π’ Π½Π΅Ρ‘ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΈ, Ρ‚Π΅ΠΌ самым, ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, Π½Π΅ мСняя ΠΊΠΎΠ΄.

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈΠ»ΠΈ экзСмпляры класса

Π§Π΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΎΡ‚ классов

Как ΡƒΠΆΠ΅ Π±Ρ‹Π»ΠΎ сказано, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ – это ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ экзСмпляр класса. ВсС ΠΌΡ‹ относимся ΠΊ классу людСй, Π½ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· нас – ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ этого класса.

Как ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса Π² Python

Если Ρƒ нас Π΅ΡΡ‚ΡŒ рСализация класса, Ρ‚ΠΎ Π΅Π³ΠΎ экзСмпляр ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ просто:

class AirConditioner: def __init__(self, model, capacity): self.model = model self.capacity = capacity def turn_on(self): print('Now in the room will be cool') # создадим ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса ΠšΠΎΠ½Π΄ΠΈΡ†ΠΈΠΎΠ½Π΅Ρ€ ballu = AirConditioner('BPAC-07', 785) ballu.turn_on() > Now in the room will be cool

Атрибуты ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°

Атрибуты класса ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ динамичСскими ΠΈ статичСскими. На ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΎΠ½ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Ρ‚Π°ΠΊ:

class MightiestWeapon: name = "Default name" def __init__(self, weapon_type): self.weapon_type = weapon_type # Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ name ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΈ Π½Π΅ создавая ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° MightiestWeapon.name = 'Steel Sword' print(MightiestWeapon.name) > Steal Sword # создаём ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈ сразу ΠΆΠ΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ динамичСский Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ конструктора hero_sword = MightiestWeapon('sword') # ΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ, ΡƒΠΆΠ΅ для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ имя hero_sword.name = 'Excalibur' # Π½ΠΎΠ²ΠΎΠ΅ статичСскоС имя ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для всСго класса Π½Π΅ измСнится print(MightiestWeapon.name) > Steal Sword print(hero_sword.name) > Excalibur

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

НСрСдко Π² процСссС написания ΠΊΠΎΠ΄Π° выясняСтся, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ Π΄Ρ€ΡƒΠ³ΠΈΠΌ Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠΉ. ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ сходств ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ называСтся «Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ».

# класс "Π–ΠΈΠ²ΠΎΡ‚Π½ΠΎΠ΅". Π­Ρ‚ΠΎ достаточно абстрактный класс всСго с ΠΎΠ΄Π½ΠΈΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ "Π˜Π·Π΄Π°Ρ‚ΡŒ Π·Π²ΡƒΠΊ". class Animal: def make_a_sound(self): print("Π˜Π·Π΄Π°Ρ‘Ρ‚ ΠΆΠΈΠ²ΠΎΡ‚Π½Ρ‹ΠΉ Π·Π²ΡƒΠΊ")

ΠœΡ‹ всС прСкрасно Π·Π½Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΡ‚ΠΈΠΊΠΈ, ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Π»ΡŽΠ±ΡΡ‚ всё Ρ€ΠΎΠ½ΡΡ‚ΡŒ, Π° собакСны – Ρ€Ρ‹Ρ‚ΡŒ зСмлю. Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π΄Π²Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… класса-наслСдника:

# Ρ„Π°ΠΊΡ‚ наслСдования Π² Python указываСтся ΠΏΡ€ΠΈ объявлСнии класса-наслСдника. # Π² скобках, послС ΠΈΠΌΠ΅Π½ΠΈ класса, указываСтся класс-Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ class Cat(Animal): def drop_everything(self): print('Вставай скорСС, я всё ΡƒΡ€ΠΎΠ½ΠΈΠ»!') class Dog(Animal): def dig_the_ground(self): print('ΠžΠ΄Π½Π°ΠΆΠ΄Ρ‹ я докопаюсь Π΄ΠΎ ядра ΠΏΠ»Π°Π½Π΅Ρ‚Ρ‹!')

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ этих Π΄Π²ΡƒΡ… классов ΠΌΠΎΠ³ΡƒΡ‚ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΆΠΈΠ²ΠΎΡ‚Π½Ρ‹Π΅ Π·Π²ΡƒΠΊΠΈ, Π½ΠΎ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ собствСнныС ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ дСйствия:

Tom = Cat() Tom.make_a_sound() > Π˜Π·Π΄Π°Ρ‘Ρ‚ ΠΆΠΈΠ²ΠΎΡ‚Π½Ρ‹ΠΉ Π·Π²ΡƒΠΊ Tom.drop_everything() > Вставай скорСС, я всё ΡƒΡ€ΠΎΠ½ΠΈΠ»!

ΠŸΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅

БСйчас Ρƒ нас ΠΈ кошка, ΠΈ собака просто «ΠΈΠ·Π΄Π°ΡŽΡ‚ ΠΆΠΈΠ²ΠΎΡ‚Π½Ρ‹Π΅ Π·Π²ΡƒΠΊΠΈ», Π° Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ Π±Ρ‹, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΡΠ»Ρ‹ΡˆΠ°Ρ‚ΡŒ Π·Π²ΡƒΠΊΠΈ, свойствСнныС ΠΈΠΌΠ΅Π½Π½ΠΎ этим ΠΆΠΈΠ²ΠΎΡ‚Π½Ρ‹ΠΌ. Для этого сущСствуСт ΠΌΠ΅Ρ…Π°Π½ΠΈΠΊΠ° пСрСопрСдСлСния. Достаточно ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ Π² классС-наслСдникС ΠΌΠ΅Ρ‚ΠΎΠ΄ с Ρ‚Π΅ΠΌ ΠΆΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΈ Π² Π±Π°Π·ΠΎΠ²ΠΎΠΌ классС:

class Dog(Animal): def dig_the_ground(self): print('ΠžΠ΄Π½Π°ΠΆΠ΄Ρ‹ я докопаюсь Π΄ΠΎ ядра ΠΏΠ»Π°Π½Π΅Ρ‚Ρ‹!') # ΠΎΡ‚Π½Ρ‹Π½Π΅ для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² класса "Π‘ΠΎΠ±Π°ΠΊΠ°" Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ эта рСализация ΠΌΠ΅Ρ‚ΠΎΠ΄Π° def make_a_sound(self): print('Π“Π°Π²-Π³Π°Π²!') Balto = Dog() Balto.make_a_sound() > Π“Π°Π²-Π³Π°Π²!

Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ классов

Π’Π΅ΡΡŒ ΠΊΠΎΠ΄ Π½ΡƒΠΆΠ½ΠΎ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. ΠšΠ»Π°ΡΡΡ‹ – Π½Π΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅. Π‘Ρ‚ΠΎΠΈΡ‚ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ Π²Ρ‹ ΠΏΠΈΡˆΠΈΡ‚Π΅ Π½Π΅ для сСбя, ΠΈ Π²ΠΏΠΎΠ»Π½Π΅ вСроятно, Ρ‡Ρ‚ΠΎ написанноС Π²Π°ΠΌΠΈ придётся ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠΌ людям. ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΏΠΎΠ²Ρ‹ΡˆΠ°ΡŽΡ‚ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‚ Π»Π΅Π³ΠΊΠΎΡΡ‚ΡŒ восприятиС ΠΊΠΎΠ΄Π° Π² Ρ€Π°Π·Ρ‹, Ρ‚Π΅ΠΌ самым экономя врСмя ΠΈ дСньги.

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π²ΠΎΡ‚ наша ΡΡ‚Π°Ρ‚ΡŒΡ ΠΎ Python-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.


ООП Π΅Ρ‰Ρ‘ Π΄ΠΎΠ»Π³ΠΎΠ΅ врСмя Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡΡ‚Π°Π²Π°Ρ‚ΡŒΡΡ ΠΏΠ΅Ρ€Π΅Π΄ΠΎΠ²ΠΎΠΉ ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠΎΠΉ программирования. Но ΡƒΡ‡ΠΈΡ‚ΡŒ Π΅Ρ‘ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΈ ΠΏΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅. ΠŸΡ€ΡΠΌΠ°Ρ связь ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования с Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΌ ΠΌΠΈΡ€ΠΎΠΌ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π³Π»ΡƒΠ±ΠΆΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ устройство ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹, ΠΊΠ°ΠΊ самого языка, Ρ‚Π°ΠΊ ΠΈ написания ΠΊΠΎΠ΄Π° Π² Ρ†Π΅Π»ΠΎΠΌ.

Python — ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ ΠžΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ (ООП)


Π’ Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π΄Π°ΡŽΡ‚ΡΡ основы ООП Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅

Π’ python всё — ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹.

*Аудитория Π² шокС, особо Π½Π΅Ρ€Π²Π½Ρ‹Π΅ Π΄Π°ΠΌΠΎΡ‡ΠΊΠΈ ΠΏΠ°Π΄Π°ΡŽΡ‚ Π² ΠΎΠ±ΠΌΠΎΡ€ΠΎΠΊ*
  • Числа — ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹
  • Π‘Ρ‚Ρ€ΠΎΠΊΠΈ — ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹
  • Бписки — ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹
  • ΠšΠ»Π°ΡΡΡ‹ — ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹


Если Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ просто, Ρ‚ΠΎ «ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹» — это нСкая структура.

И Π±Ρ‹Π»ΠΎ слово…

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ «ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€Ρ‹» ΠΈΠ»ΠΈ классы.
  • Класс — это схСма, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰Π°Ρ Π½Π°ΡˆΡƒ структуру, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π½Π΅Ρ‘ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ присущиС Π΅ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹.
  • ΠœΠ΅Ρ‚ΠΎΠ΄Β — это функция. Π’.Π΅. ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° — это функция, описанная Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΈ присущая этому ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ. ΠœΠ΅Ρ‚ΠΎΠ΄ — это функция, которая дСйствуСт Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°. Для удобства Ρƒ Ρ€Π°Π·Π½Ρ‹Ρ… Π²ΠΈΠ΄ΠΎΠ² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠ΅ ΠΏΠΎ Ρ€Π°Π·Π½ΠΎΠΌΡƒ, Π½ΠΎ схоТим ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.
  • ЭкзСмпляр — это ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, созданный ΠΈΠ· класса.

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€

Бписок:
L = [1, 2, 3, 4]

  • Бписок (List) — это класс ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°
  • ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ L содСрТит экзСмпляр ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°Β (ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ список [1, 2, 3, 4])
  • append(), sort() —Β ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Ρ‚.Π΅. Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊ Π΅Π³ΠΎ экзСмплярам.

Пока Π·Π²ΡƒΡ‡ΠΈΡ‚ Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ слоТно.
Но ΠΏΠΎ ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ Π½Π΅ понятно зачСм это Π½ΡƒΠΆΠ½ΠΎ. =)

1 Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ Π½Π° ΡƒΠΌ — абстракция. ΠœΡ‹ Π½Π΅ Π΄ΡƒΠΌΠ°Π΅ΠΌ ΠΎ том как устроСн ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Π° Π΄ΡƒΠΌΠ°Π΅ΠΌ ΠΎ Ρ‚ΠΎΠΌΒ Ρ‡Ρ‚ΠΎΒ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ с Π½ΠΈΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ.
НапримСр, Π²ΠΎΠ·ΡŒΠΌΡ‘ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ dir() ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΄ΠΈΠΌ экзСмпляр ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° список Π² Π½Π΅Ρ‘ ΠΊΠ°ΠΊ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚:

dir(L)


На Π²Ρ‹Ρ…ΠΎΠ΄Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ большой список. Π‘ΠΎΠ»ΡŒΡˆΠΎΠΉ список мСтодов для списка.
Π£ нас Π΅ΡΡ‚ΡŒ 2 ΠΏΡƒΡ‚ΠΈ:
  • ΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Π½ΠΈΡ… (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΏΡ‹Ρ‚Π°ΡΡΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹)
  • Π½Π°ΠΉΡ‚ΠΈ ΠΈΡ… описаниС Π² google ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ

Но Π² любом случаС ΠΌΡ‹ ΡƒΠ·Π½Π°Π΅ΠΌ ΠΎ Ρ‚ΠΎΠΌ, «Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ со списком», Π½Π΅ изучая Ρ‚ΠΎ ΠΊΠ°ΠΊ ΠΎΠ½ устроСн.

ΠŸΡ€ΠΈ этом Ссли ΠΌΡ‹ создадим свою структуру Π΄Π°Π½Π½Ρ‹Ρ…, свой класс со своими ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ, Ρ‚ΠΎ Ρƒ Π½ΠΈΡ… ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎΠΈΠΌΡ‘Π½Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ссли ΠΎΠ½ΠΈ Π²Π΅Π΄ΡƒΡ‚ сСбя Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ).

НапримСр, Ρƒ строк Π΅ΡΡ‚ΡŒ нСсколько ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², ΠΎΠ΄Π½ΠΎΠΈΠΌΡ‘Π½Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ списков:

ΠœΠ΅Ρ‚ΠΎΠ΄ index() являСтся ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π½ΠΈΡ….
Рассмотрим ΠΊΠ°ΠΊ ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ для Π½Π°ΡˆΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ²:

Π›Π΅Π³ΠΊΠΎ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π² спискС ΠΈΠΌΠ΅Π»ΠΈ ΠΏΠΎ 2 подчёркивания с ΠΎΠ±Π΅ΠΈΡ… сторон, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

__len__
Π­Ρ‚ΠΎ «ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹ΠΉ» ΠΌΠ΅Ρ‚ΠΎΠ΄. ЀактичСски, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ len(), Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

Ρ‚ΠΎ Π½Π° самом Π΄Π΅Π»Π΅ вызываСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ __len__ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ?
Всё ΠΏΠΎΡ‚ΠΎΠΌΡƒ ΠΆΠ΅ — Ссли ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ языка len ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒ Π΄Π»ΠΈΠ½Ρƒ любого ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Ρ‚ΠΎ это Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. Π”Π° ΠΈ для Π½ΠΎΠ²Ρ‹Ρ… классов ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, numpy.array) эта функция Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ.
А Ρ‚Π°ΠΊ Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ класса Π²Π½ΡƒΡ‚Ρ€ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ΅ описаниС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚.

Π’Π°ΠΊ ΠΆΠ΅ это позволяСт ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ².
НапримСр, Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚, Ссли ΠΌΡ‹ напишСм:

ЀактичСски Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Π²Π°Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄ add — s.__add__(L)

Π’ нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΠΎΡˆΠΈΠ±ΠΊΡƒ:

Но Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ классы ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π²ΠΏΠΎΠ»Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π½Π° Π²Ρ…ΠΎΠ΄ «Ρ‡ΡƒΠΆΠ°ΠΊΠ°» (Π½Π΅ всякого ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ):

А Π΅Ρ‰Ρ‘ ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ пишСм

print L

, Ρ‚ΠΎ Π½Π° самом Π΄Π΅Π»Π΅ вызываСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ __str__, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ список L Π² строку для ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ.

Π˜Ρ‚Π°ΠΊ,Β 

  • класс — это инструкция, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ собираСтся ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚
  • экзСмпляр — это ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚
  • Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ — это функция, присущая ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌΡƒ классу ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

И это всё?

НСт. =)

Когда ΠΌΡ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ 2 экзСмпляра ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² список:


Ρ‚ΠΎ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ содСрТат Ρ€Π°Π·Π½Ρ‹Π΅Β Π΄Π°Π½Π½Ρ‹Π΅.
Π’.Π΅. Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΏΠΎΠΌΠΈΠΌΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π΅ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, ΠΈ хранятся ΠΎΠ½ΠΈ Π² Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°Ρ….

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒΒ shape для numpy:

ΠœΡ‹ просто создали Π²Π΅ΠΊΡ‚ΠΎΡ€, ΠΏΠ΅Ρ€Π΅Π΄Π°Π² Π² Π½Π΅Π³ΠΎ Π΄Π°Π½Π½Ρ‹Π΅. И ΠΏΡ€ΠΈ этом вычислился Π΅Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€.
Π›ΠΎΠ³ΠΈΡ‡Π½ΠΎ, для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΌΠ°Ρ‚Ρ€ΠΈΡ† Π² Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ² ΠΏΡ€ΠΎΡ‰Π΅ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€ΠΈ 1 ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ с Π½Π°Ρ‚ΡƒΡ€Π°Π»ΡŒΠ½Ρ‹ΠΌ числом, Ρ‡Π΅ΠΌ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΠΎ всСм Π΄Π°Π½Π½Ρ‹ΠΌ ΠΈ Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ врСмя для вычислСний.

Π”Π°Π²Π°ΠΉΡ‚Π΅ попрактикуСмся

Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ пустой класс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΈ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Ρ…Ρ€Π°Π½ΠΈΡ‚:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ создадим 1ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρƒ нашСго класса.
Для этого создадим Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°. Она Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅ 1 Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ — self — это экзСмпляр Ρ‚ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ функция Π±ΡƒΠ΄Π΅Ρ‚.

Если ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, Ρ‚ΠΎ просто Π·Π°Π΄Π°Π΄ΠΈΠΌ ΠΈΡ… послС self, ΠΊΠ°ΠΊ ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

Π­Ρ‚ΠΎ всё Π·Π΄ΠΎΡ€ΠΎΠ²ΠΎ, Π½ΠΎ ΠΏΠΎΠΊΠ° особой Ρ€Π°Π·Π½ΠΈΡ†Ρ‹ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ Π½Π΅Ρ‚.
МоТно ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ класс ΠΊΠ°ΠΊ Π½Π΅ΠΊΠΈΠΉ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ для Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ хранСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.
Но ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ всё ΠΆΠ΅ класс ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚ Π΅Ρ‰Ρ‘ ΠΈ Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… Π² Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°Ρ….

Бинтаксис для Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π΅Π½ синтаксису ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² (Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послС Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° Π½Π΅ Π½Π°Π΄ΠΎ ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΡ€ΡƒΠ³Π»Ρ‹Π΅ скобки):


Π”Π°Π²Π°ΠΉΡ‚Π΅ создадим Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ Ρƒ экзСмпляра ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°:

Π’ΠΏΠΎΠ»Π½Π΅ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ Ссли я создам 2ΠΉ экзСмпляр этого ΠΆΠ΅ класса, ΠΈ ΠΏΡ€ΠΈΡΠ²ΠΎΡŽ ΡƒΠΆΠ΅ Π² Π½Ρ‘ΠΌ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρƒ с Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΊΠ°ΠΊΠΎΠ΅-Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ρ‚ΠΎ Ρƒ Ρ€Π°Π·Π½Ρ‹Ρ… экзСмпляров Π² ΠΎΠ΄Π½ΠΎΠΈΠΌΡ‘Π½Π½ΠΎΠΌ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π·Π½Ρ‹Π΅ значСния:

Π’Π°ΠΊ ΠΆΠ΅ я ΠΌΠΎΠ³Ρƒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Π²Π½ΡƒΡ‚Ρ€ΠΈ класса ΠΈ ΠΎΠ½Π° станСт Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² всСх экзСмпляров этого класса.
ЕстСствСнно, это Π½Π΅ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ пСрСопрСдСлСния ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° Ρƒ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Ρ‚ΠΎ экзСмпляра:

Для экзСмпляров B ΠΈ C Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° Ρ€Π°Π²Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ ΠΏΠΎ-ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ (списку), Π° для экзСмпляров E ΠΈ A ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ (Π½Π° число ΠΈ строку).

Пока ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ классами Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½ΠΎ:

  • Π½Π°Π΄ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ класс
  • ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚
  • ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΈΠ· Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ², записав Ρ‚ΡƒΠ΄Π° кастомныС Π΄Π°Π½Π½Ρ‹Π΅
  • ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ, ΠΏΠ΅Ρ€Π΅Π΄Π°Π² Ρ‚ΡƒΠ΄Π° кастомныС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹

Однако, процСсс ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽΒ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€Π° (Π½Π° самом Π΄Π΅Π»Π΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π°, Π½ΠΎ ΠΌΡ‹ Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ ΡƒΠ³Π»ΡƒΠ±Π»ΡΡ‚ΡŒΡΡ Π² Ρ€Π°Π·Π½ΠΈΡ†Ρƒ).Β ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ вызываСтся автоматичСски ΠΏΡ€ΠΈ создании экзСмпляра.

Для этого слуТит ΠΌΠ΅Ρ‚ΠΎΠ΄ __init__().

ΠŸΠ΅Ρ€Π΅ΠΏΠΈΡˆΠ΅ΠΌ наш класс ΠΈ убСдимся, Ρ‡Ρ‚ΠΎ Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚Π° Π½Π΅ измСнилась:

Π’Π°ΠΆΠ½ΠΎ:

  • ΠΌΠ΅Ρ‚ΠΎΠ΄ __init__(), ΠΊΠ°ΠΊ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ 1 Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ self
  • ΠΊ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΈΠ· ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΊΠ°ΠΊ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌ self (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, self.arg)
  • Если Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ создаётся конструктором __init__, Ρ‚ΠΎ Π΅Π³ΠΎ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π² классС ΠΊΠ°ΠΊ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ

Если для конструктора __init__ ΠΌΡ‹ Π·Π°Π΄Π°Π΄ΠΈΠΌ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΊΡ€ΠΎΠΌΠ΅ self, Ρ‚ΠΎ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π² конструктор ΠΏΡ€ΠΈ создании экзСмпляра ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΈ сразу Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹, Ссли Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ.

Π”Π°Π²Π°ΠΉΡ‚Π΅ создадим Ρ‡ΡƒΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ осмыслСнный класс.
ΠŸΡƒΡΡ‚ΡŒ это Π±ΡƒΠ΄Π΅Ρ‚ класс «Π’ΠΎΡ‡ΠΊΠ°». Π’ΠΎΡ‡ΠΊΠ° Ρƒ нас Π±ΡƒΠ΄Π΅Ρ‚ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ 2 ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌΠΈ (x, y).
И сразу Π·Π°Π΄Π°Π΄ΠΈΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ для нашСй Ρ‚ΠΎΡ‡ΠΊΠΈ, Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡŽΡ‰ΠΈΠΉ расстояниС ΠΎΡ‚ Π½Π΅Ρ‘ Π΄ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ (для этого Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ Ρ‚Π΅ΠΎΡ€Π΅ΠΌΠΎΠΉ ΠŸΠΈΡ„Π°Π³ΠΎΡ€Π°):

Π—Π΄Π΅ΡΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ dist ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ 2 Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°: экзСмпляр Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈ Π΅Ρ‰Ρ‘ ΠΎΠ΄Π½ΠΎΠ³ΠΎ, ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΠΉΡ‚ΠΈ расстояниС.
ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΠ΅Ρ‚ΠΎΠ΄ примСняСтся ΠΊ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌΡƒ экзСмпляру, Ρ‚ΠΎ ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π² скобках я ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ 2ю Ρ‚ΠΎΡ‡ΠΊΡƒ).

Если я Ρ…ΠΎΡ‡Ρƒ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π² ΠΌΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ (ΠΊΠ°ΠΊ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π² скобках ΠΏΠΎ порядку), Ρ‚ΠΎ ΠΌΠ½Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ Π΄ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°. Он начнётся с ΠΈΠΌΠ΅Π½ΠΈ класса:

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ 2ΠΉ способ обращСния позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ классы ΠΊΠ°ΠΊ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π΄Π°ΠΆΠ΅ для стандартных Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ….

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚Π°ΠΊΠΎΠ³ΠΎ «Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°»:

Π—Π°ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Ссли ΠΌΡ‹ попытаСмся Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ экзСмпляр ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° (Π° Π½Π΅ Π΅Π³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹, ΠΊΠ°ΠΊ Ρ€Π°Π½ΡŒΡˆΠ΅), Ρ‚ΠΎ Π½ΠΈΡ‡Π΅Π³ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π³ΠΎ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ:

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ½ΡΡ‚ΡŒ экзСмпляром ΠΊΠ°ΠΊΠΎΠ³ΠΎ класса ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ являСтся ΠΈ Π½Π° ΠΊΠ°ΠΊΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ памяти смотрит ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, Π½ΠΎ Π² Ρ€Π°Π±ΠΎΡ‚Π΅ это довольно бСсполСзно.
Π‘ΠΎΠ³Π»Π°ΡΠΈΡ‚Π΅ΡΡŒ, пСчатая экзСмпляр списка ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ список — это ΡƒΠ΄ΠΎΠ±Π½ΠΎ.
Π’ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ стандартным ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ __str__, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ вызываСтся ΠΏΡ€ΠΈ Π΅Π³ΠΎ ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ print:

Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½Ρ‹ΠΉ эффСкт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ — послС пСрСсоздания класса Ρ€Π°Π½Π΅Π΅ созданныС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π½Π΅ ΠΌΠ΅Π½ΡΡŽΡ‚ своСго повСдСния.

Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ класс — это Ρ‚ΠΎΠΆΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚.

Π‘ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния python ΠΌΡ‹ создали 2 ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. И Π½Π° Π±Π°Π·Π΅ 1-ΠΎΠ³ΠΎ создали нСсколько экзСмпляров.
ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½ΠΎΠ²Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ добавились Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ придётся ΠΏΠ΅Ρ€Π΅ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ.

Π”Π°Π²Π°ΠΉΡ‚Π΅ Π·Π°Π²Π΅Π΄Ρ‘ΠΌ Π΅Ρ‰Ρ‘ 1 экзСмпляр ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° с Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΆΠ΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌΠΈ, Ρ‡Ρ‚ΠΎ ΠΈ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ.
Π’ Π±Ρ‹Ρ‚ΠΎΠ²ΠΎΠΌ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠΈ 2 Ρ‚Π°ΠΊΠΈΠ΅ Ρ‚ΠΎΡ‡ΠΊΠΈ «Ρ€Π°Π²Π½Ρ‹». Но Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚, Ссли ΠΌΡ‹ ΠΈΡ… сравним?

Π‘ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния python это 2 Ρ€Π°Π·Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π° ΠΏΠΎΡ‚ΠΎΠΌΡƒ ΠΎΠ½ΠΈ НЕ Ρ€Π°Π²Π½Ρ‹.

Π§Ρ‚ΠΎΠ±Ρ‹ это ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ стандартный ΠΌΠ΅Ρ‚ΠΎΠ΄ __eq__:

Π—Π°ΠΌΠ΅Ρ‡Ρƒ, Ρ‡Ρ‚ΠΎ Ссли ΠΌΡ‹ Π·Π°Π²Π΅Π΄Ρ‘ΠΌ ΠΏΠΎ Π½ΠΎΠ²ΠΎΠΌΡƒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρƒ Ρƒ Π½Π°ΡˆΠΈΡ… Ρ‚ΠΎΡ‡Π΅ΠΊ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ†Π²Π΅Ρ‚Ρƒ), Ρ‚ΠΎ опСрация сравнСния ΠΈΡ… ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚:


Π“Π΅Ρ‚Ρ‚Π΅Ρ€Ρ‹ ΠΈ Π‘Π΅Ρ‚Ρ‚Π΅Ρ€Ρ‹

ИдСя Π³Π΅Ρ‚Ρ‚Π΅Ρ€ΠΎΠ² ΠΈ сСттСров Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π² экзСмпляр класса значСния Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² явно — довольно опасная идСя.
Π’.ΠΊ. ΠΏΠΈΡ‚ΠΎΠ½ язык с динамичСский Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ, Ρ‚ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ любой Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ с ΠΎΠ΄Π½ΠΈΠΌ ΠΈ Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ€Π°Π·Π½Ρ‹Ρ… экзСмпляров (ΠΌΡ‹ Ρ‚Π°ΠΊ ΠΈ Π΄Π΅Π»Π°Π»ΠΈ Ρ€Π°Π½ΡŒΡˆΠ΅ ΠΈ считали это Π΄Π°ΠΆΠ΅ прСимущСством)

Но ΠΈΠ½ΠΎΠ³Π΄Π° ΠΏΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΈΠΌΠ΅Π΅Ρ‚ смысл провСсти Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΡŽ. Или ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ ΠΏΠ΅Ρ€Π΅Π·Π°Ρ‚ΠΈΡ€Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π° добавляСт (ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° являСтся append для списков).

Π”ΠΎΠ±Π°Π²ΠΈΠΌ Π² наш класс 2 Π½ΠΎΠ²Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄Π°:

  • сСттСр — setColor — провСряСт, Ρ‡Ρ‚ΠΎ пСрСдаётся строка ΠΈ записываСт Π΅Ρ‘ Π² Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ color экзСмпляра. Если ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ.
  • Π³Π΅Ρ‚Ρ‚Π΅Ρ€Β — getColor — Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° color Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ экзСмпляра

По ΠΈΠ΄Π΅Π΅ Π½Π° этом этапС Π½Π°Π΄ΠΎ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ всС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ нашСго класса, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π² Π½ΠΈΡ… использовались Π³Π΅Ρ‚Ρ‚Π΅Ρ€Ρ‹ ΠΈ сСттСры вмСсто прямых ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΉ ΠΊ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌ.
=)

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

ИдСя Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² классС Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для Π½Π΅Π³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹.
И ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ Π² ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΡŽ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹.
ΠžΠ±Ρ‹Ρ‡Π½ΠΎ это ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ΡΡ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… ΠΆΠΈΠ²ΠΎΡ‚Π½Ρ‹Ρ…: ΠΊΠΎΡˆΠ΅Ρ‡ΠΊΠΈ, собачки, ΠΊΡ€ΠΎΠ»ΠΈΠΊΠΈ ΠΈ Ρ‚.ΠΏ.
Π•ΡΡ‚ΡŒ класс ΠΆΠΈΠ²ΠΎΡ‚Π½Ρ‹Π΅, ΠΎΠ½ ΠΈΠΌΠ΅Π΅Ρ‚
  • Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹: число Π½ΠΎΠ³, имя, возраст.
  • ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹: Π³Π΅Ρ‚Ρ‚Π΅Ρ€Ρ‹ ΠΈ сСттСры

Π’Π΅ΠΏΠ΅Ρ€ΡŒ создадим класс кошки. Кошки — Ρ‚ΠΎΠΆΠ΅ ΠΆΠΈΠ²ΠΎΡ‚Π½Ρ‹Π΅. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ всС Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса ΠΆΠΈΠ²ΠΎΡ‚Π½Ρ‹Π΅ ΠΈΠΌ Ρ‚ΠΎΠΆΠ΅ присущи. Но ΠΊΡ€ΠΎΠΌΠ΅ этого, Ρƒ Π½ΠΈΡ… ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ свои:
  • Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹: имя ΠΈ Ρ‚.ΠΏ.
  • ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹: «Π³ΠΎΠ²ΠΎΡ€Π΅Π½ΠΈΠ΅» (мяу) ΠΈ Ρ‚.ΠΏ.

Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄, класс ΠΊΠΎΡˆΠΊΠΈΒ Π½Π°ΡΠ»Π΅Π΄ΡƒΠ΅Ρ‚ΡΡΒ ΠΎΡ‚ класса ΠΆΠΈΠ²ΠΎΡ‚Π½Ρ‹Π΅.

НаслСдник ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ всС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ родитСля, Π° Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Π½ΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ссли ΠΌΡ‹ сдСлаСм класс «ΠΏΡ‚ΠΈΡ†Ρ‹» наслСдником класса «ΠΆΠΈΠ²ΠΎΡ‚Π½Ρ‹Π΅», Ρ‚ΠΎ, вСроятно, ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π½Π° число Π½ΠΎΠ³ измСнится с 4 Π΄ΠΎ 2), Π° Ρ‚Π°ΠΊ ΠΆΠ΅ Π·Π°Π΄Π°Ρ‚ΡŒ собствСнныС Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹.

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

Как Π²ΠΈΠ΄ΠΈΠΌ, наш класс ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ сСттСр Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса, Π΄Π° ΠΈ стандартная функция __str__ Ρ‚ΠΎΠΆΠ΅ наслСдуСтся.

Π”Π°Π²Π°ΠΉΡ‚Π΅ Π·Π°Π΄Π°Π΄ΠΈΠΌ Π½Π°ΡˆΠ΅ΠΌΡƒ классу Π½ΠΎΠ²Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ __str__, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π΅ Π½Π° ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ это Π½Π΅ просто Ρ‚ΠΎΡ‡ΠΊΠ°, ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΌΠ°Ρ€ΠΊΠ΅Ρ€. И Π²Π½ΡƒΡ‚Ρ€ΠΈ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ __str__ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса:

Π’.Π΅. Π²Ρ‹ всСгда ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ Ρƒ экзСмпляров Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… классов, Ссли это Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ.

Π”Π°Π²Π°ΠΉΡ‚Π΅ создадим Π΅Ρ‰Ρ‘ ΠΏΠ°Ρ€Ρƒ классов.

1 Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π΅Π½ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΌ — это Π±ΡƒΠ΄Π΅Ρ‚ класс ΠΈΠΊΠΎΠ½ΠΎΠΊ с Π³Π΅Ρ‚Ρ‚Π΅Ρ€ΠΎΠΌ ΠΈ сСттСром:

Π’Π°ΠΊΠΈΠ΅ классы Π΅Ρ‰Ρ‘ ΠΈΠ½ΠΎΠ³Π΄Π° Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ «ΠΏΡ€ΠΈΠΌΠ΅ΡΡŒΡŽ», дальшС станСт понятно ΠΏΠΎΡ‡Π΅ΠΌΡƒ.

А Π²ΠΎΡ‚ 2 Π±ΡƒΠ΄Π΅Ρ‚ интСрСснСС. Π­Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ класс ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ. И ΠΌΡ‹ Π½Π΅ станСм Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ для Π½Π΅Π³ΠΎ Π½ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ², Π½ΠΈ классов. Но унаслСдуСм Π΅Π³ΠΎ ΠΎΡ‚ 2 Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ:

Π£Π΄ΠΈΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, Π½ΠΎ это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚.
ΠŸΡ€ΠΈ этом:

  • наслСдник ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ всС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΎΠ±ΠΎΠΈΡ… Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ.
  • Ссли Ρƒ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ Π΅ΡΡ‚ΡŒ ΠΎΠ΄Π½ΠΎΠΈΠΌΡ‘Π½Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, Ρ‚ΠΎ автоматичСски наслСдник ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ‚ΠΎΠ³ΠΎ, ΠΊΡ‚ΠΎ Ρ€Π°Π½ΡŒΡˆΠ΅ Π² спискС (Π² нашСм случаС Ρ€Π°Π½ΡŒΡˆΠ΅ Π±Ρ‹Π» Π³Π΅ΠΎ ΠΌΠ°Ρ€ΠΊΠ΅Ρ€, поэтому конструктор Π±Ρ‹Π» унаслСдован ΠΎΡ‚ Π½Π΅Π³ΠΎ, Π° Π½Π΅ ΠΎΡ‚ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ).

НаслСдованиС ΠΎΡ‚ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ ΠΈΠ½ΠΎΠ³Π΄Π° считаСтся ΡΠΎΠΌΠ½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΎΠΉ, Π±ΡƒΠ΄ΡŒΡ‚Π΅ с Π½ΠΈΠΌ Π°ΠΊΠΊΡƒΡ€Π°Ρ‚Π½Ρ‹.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ класса

ΠœΡ‹ ΡƒΠΆΠ΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈ ΠΏΡ€ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ Π² качСствС Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° Π΄Π°Π½Π½Ρ‹Ρ… (ΠΌΡ‹ Π΄Π°ΠΆΠ΅ создавали ΠΈΡ… Π²Π½ΡƒΡ‚Ρ€ΠΈ класса Π² самом Π½Π°Ρ‡Π°Π»Π΅).
Π•ΡΡ‚ΡŒ Π΅Ρ‰Ρ‘ ΠΎΠ΄Π½ΠΎ интСрСсноС ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ для Π½ΠΈΡ… — пСрСмСнная класса. Π’.Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ хранятся Π² классС, Π° Π½Π΅ Π² экзСмплярС.

ΠœΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅ΠΌ конструктор ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ (Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π·Π°ΠΎΠ΄Π½ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ url). Π’ классС создадим ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ tag с ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ€Π°Π²Π½Ρ‹ΠΌ 0. Π’ конструкторС ΠΆΠ΅ запишСм Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ID создаваСмого экзСмпляра Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ· tag, Π° tag послС этого ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠΌ Π½Π° 1:

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ:

  • Π² Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π΅ ID ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° хранится Π΅Π³ΠΎ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ порядковый Π½ΠΎΠΌΠ΅Ρ€
  • Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ tag класса хранится число созданных ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² (Ρ‚ΡƒΡ‚ Π½Π°Π΄ΠΎ Π±Ρ‹Ρ‚ΡŒ остороТнСС, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΌΡ‹ Π·Π°Ρ…ΠΎΡ‚ΠΈΠΌ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ‚ΡŒ это число ΠΏΡ€ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°).

Ну ΠΈ Π½Π΅ Π·Π°Π±Ρ‹Π²Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ экзСмпляр ΠΈΠΌΠ΅Π΅Ρ‚ доступ ΠΊ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌ класса ΠΏΠΎΠΌΠΈΠΌΠΎ собствСнных, Ρ‚.Π΅. tag:

ΠŸΠ΅Ρ€Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²

ΠœΡ‹ ΡƒΠΆΠ΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈ ΠΏΡ€ΠΎ наслСдованиС ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², ΠΌΡ‹ Π΄Π°ΠΆΠ΅ использовали ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса.
Но ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒΒ Ρ‡Π°ΡΡ‚ΡŒΒ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° (ΠΈ ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΡ… 1 свой). Π‘ΠΎΠΊΡ€Π°Ρ‚ΠΈΠΌ наш ΠΊΠΎΠ΄ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ, унаслСдовав конструкторы Π³Π΅ΠΎ ΠΌΠ°Ρ€ΠΊΠ΅Ρ€Π° ΠΈ ΠΈΠΊΠΎΠ½ΠΊΠΈ:

ΠœΡ‹ совмСстили 2 наслСдуСмых ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΈ свой ΠΊΠΎΠ΄.
И всё это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚.
=)

ΠŸΠΎΠ»Π΅Π·Π½Ρ‹Π΅ ссылки:



ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ (ООП) Π² Python 3 — Real Python

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ (ООП) — это ΠΌΠ΅Ρ‚ΠΎΠ΄ структурирования ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΡƒΡ‚Π΅ΠΌ объСдинСния связанных свойств ΠΈ повСдСния Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ . Π’ этом руководствС Π²Ρ‹ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚Π΅ основы ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования Π½Π° Python.

ΠšΠΎΠ½Ρ†Π΅ΠΏΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌ систСмы. Π”ΡƒΠΌΠ°ΠΉΡ‚Π΅ ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΊΠ°ΠΊ ΠΎ своСго Ρ€ΠΎΠ΄Π° заводской сборочной Π»ΠΈΠ½ΠΈΠΈ. На ΠΊΠ°ΠΆΠ΄ΠΎΠΌ этапС сборочной Π»ΠΈΠ½ΠΈΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ систСмы ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π», Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ ΠΈΡ‚ΠΎΠ³Π΅ прСвращая ΡΡ‹Ρ€ΡŒΠ΅ Π² Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚.

ΠžΠ±ΡŠΠ΅ΠΊΡ‚ содСрТит Π΄Π°Π½Π½Ρ‹Π΅, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Π½Π΅ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Π΅ ΠΈΠ»ΠΈ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ этапС сборочной Π»ΠΈΠ½ΠΈΠΈ, ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠ°ΠΊ дСйствиС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ выполняСт ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ сборочной Π»ΠΈΠ½ΠΈΠΈ.

Из этого руководства Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ:

  • Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ класс , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΡ…ΠΎΠΆ Π½Π° Ρ‡Π΅Ρ€Ρ‚Π΅ΠΆ для создания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°
  • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ классы для создания Π½ΠΎΠ²Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²
  • ΠœΠΎΠ΄Π΅Π»ΡŒΠ½Ρ‹Π΅ систСмы с наслСдованиСм классов

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Π­Ρ‚ΠΎ руководство Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ ΠΈΠ· Π³Π»Π°Π²Ρ‹ Β«ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ (ООП)Β» Π² ΠΊΠ½ΠΈΠ³Π΅ ΠžΡΠ½ΠΎΠ²Ρ‹ Python: ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΎΠ΅ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² Python 3 .

Π’ ΠΊΠ½ΠΈΠ³Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ встроСнный Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ IDLE Python для создания ΠΈ рСдактирования Ρ„Π°ΠΉΠ»ΠΎΠ² Python ΠΈ взаимодСйствия с ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΎΠΉ Python, поэтому Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ врСмя ΠΎΡ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ ссылки Π½Π° IDLE Π² этом руководствС. Однако Ρƒ вас Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с запуском ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΊΠΎΠ΄Π° ΠΈΠ· Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° ΠΈ срСды ΠΏΠΎ Π²Π°ΡˆΠ΅ΠΌΡƒ Π²Ρ‹Π±ΠΎΡ€Ρƒ.

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

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ — это ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠ° программирования, которая прСдоставляСт срСдства структурирования ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ свойства ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ объСдинялись Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ .

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

Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ — это ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… Π²Π΅Ρ‰Π΅ΠΉ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΠΈ, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Π΅Ρ‰Π°ΠΌΠΈ, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΈ сотрудники, студСнты ΠΈ учитСля ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.ООП ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΌΠΈΡ€Π° ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ связаны Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Π”Ρ€ΡƒΠ³ΠΎΠΉ распространСнной ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠΎΠΉ программирования являСтся ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ , ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ структурируСт ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΊΠ°ΠΊ Ρ€Π΅Ρ†Π΅ΠΏΡ‚, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½Π° прСдоставляСт Π½Π°Π±ΠΎΡ€ шагов Π² Ρ„ΠΎΡ€ΠΌΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ ΠΊΠΎΠ΄ΠΎΠ²Ρ‹Ρ… Π±Π»ΠΎΠΊΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ для выполнСния Π·Π°Π΄Π°Ρ‡ΠΈ.

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

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅ класс Π² Python

ΠŸΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹Π΅ структуры Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ числа, строки ΠΈ списки, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ для прСдставлСния простых частСй ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ яблока, Π½Π°Π·Π²Π°Π½ΠΈΠ΅ стихотворСния ΠΈΠ»ΠΈ ваши Π»ΡŽΠ±ΠΈΠΌΡ‹Π΅ Ρ†Π²Π΅Ρ‚Π°, соотвСтствСнно. Π§Ρ‚ΠΎ, Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΠ·ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π±ΠΎΠ»Π΅Π΅ слоТноС?

НапримСр, ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ сотрудников Π² ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ. Π’Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ сотрудникС, Ρ‚Π°ΠΊΡƒΡŽ ​​как ΠΈΡ… имя, возраст, Π΄ΠΎΠ»ΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈ Π³ΠΎΠ΄, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ½ΠΈ Π½Π°Ρ‡Π°Π»ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ.

Один ΠΈΠ· способов ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это — ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ сотрудника Π² Π²ΠΈΠ΄Π΅ списка:

  kirk = ["ДТСймс ΠšΠΈΡ€ΠΊ", 34, "ΠšΠ°ΠΏΠΈΡ‚Π°Π½", 2265]
spock = ["Π‘ΠΏΠΎΠΊ", 35, "Научный сотрудник", 2254]
mccoy = ["Π›Π΅ΠΎΠ½Π°Ρ€Π΄ Маккой", "Π“Π»Π°Π²Π½Ρ‹ΠΉ Π²Ρ€Π°Ρ‡", 2266]
  

Π£ этого ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° Π΅ΡΡ‚ΡŒ ряд ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ.

Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, это ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½ΠΈΡ‚ΡŒ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ большими Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ ΠΊΠΎΠ΄Π°. Если Π²Ρ‹ ΡƒΠΊΠ°ΠΆΠ΅Ρ‚Π΅ kirk [0] Π½Π° нСсколько строк ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ мСста, Π³Π΄Π΅ объявлСн список kirk , Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅ Π»ΠΈ Π²Ρ‹, Ρ‡Ρ‚ΠΎ элСмСнт с индСксом 0 — это имя сотрудника?

Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, это ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ошибкам, Ссли Π½Π΅ Ρƒ всСх сотрудников ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ΅ количСство элСмСнтов Π² спискС.Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ спискС mccoy возраст отсутствуСт, поэтому mccoy [1] Π²Π΅Ρ€Π½Π΅Ρ‚ Β«Π“Π»Π°Π²Π½Ρ‹ΠΉ Π²Ρ€Π°Ρ‡Β» вмСсто возраста Π΄ΠΎΠΊΡ‚ΠΎΡ€Π° Маккой.

ΠžΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ способ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ этот Ρ‚ΠΈΠΏ ΠΊΠΎΠ΄Π° Π±ΠΎΠ»Π΅Π΅ управляСмым ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌ Π² обслуТивании — это ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ классы .

ΠšΠ»Π°ΡΡΡ‹ ΠΈ экзСмпляры

ΠšΠ»Π°ΡΡΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для создания ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… структур Π΄Π°Π½Π½Ρ‹Ρ…. ΠšΠ»Π°ΡΡΡ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΈ дСйствия, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, созданный ΠΈΠ· класса, ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ со своими Π΄Π°Π½Π½Ρ‹ΠΌΠΈ.

Π’ этом руководствС Π²Ρ‹ создадитС класс Dog , Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ нСкоторая информация ΠΎ характСристиках ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ собаки.

Класс — это ΠΎΠ±Ρ€Π°Π·Π΅Ρ† Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ. На самом Π΄Π΅Π»Π΅ ΠΎΠ½ Π½Π΅ содСрТит Π½ΠΈΠΊΠ°ΠΊΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ…. Класс Dog ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ имя ΠΈ возраст Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ для опрСдСлСния собаки, Π½ΠΎ ΠΎΠ½ Π½Π΅ содСрТит ΠΈΠΌΠ΅Π½ΠΈ ΠΈΠ»ΠΈ возраста ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ собаки.

Π’ Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ класс являСтся схСмой, экзСмпляр — это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, созданный ΠΈΠ· класса ΠΈ содСрТащий Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅.ЭкзСмпляр класса Dog большС Π½Π΅ являСтся ΠΏΠ»Π°Π½ΠΎΠΌ. Π­Ρ‚ΠΎ настоящая собака с Ρ‚Π°ΠΊΠΈΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ, ΠΊΠ°ΠΊ Майлз, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Π³ΠΎΠ΄Π°.

Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, класс ΠΏΠΎΡ…ΠΎΠΆ Π½Π° Ρ„ΠΎΡ€ΠΌΡƒ ΠΈΠ»ΠΈ Π°Π½ΠΊΠ΅Ρ‚Ρƒ. ЭкзСмпляр ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ Ρ„ΠΎΡ€ΠΌΠ΅, Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ. Подобно Ρ‚ΠΎΠΌΡƒ, ΠΊΠ°ΠΊ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ люди ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΎΠ΄Π½Ρƒ ΠΈ Ρ‚Ρƒ ΠΆΠ΅ Ρ„ΠΎΡ€ΠΌΡƒ своСй собствСнной ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ экзСмпляры ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ созданы ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ класса.

Как ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ класс

ВсС опрСдСлСния классов Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ с ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова class , Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ слСдуСт имя класса ΠΈ Π΄Π²ΠΎΠ΅Ρ‚ΠΎΡ‡ΠΈΠ΅.Π›ΡŽΠ±ΠΎΠΉ ΠΊΠΎΠ΄ с отступом ΠΏΠΎΠ΄ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ класса считаСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ Ρ‚Π΅Π»Π° класса.

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ класса Dog :

Π’Π΅Π»ΠΎ класса Dog состоит ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°: ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова pass . pass часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ°ΠΊ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒ, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ, ΠΊΡƒΠ΄Π° Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ ΠΈΡ‚ΠΎΠ³Π΅ ΠΏΠΎΠΉΠ΄Π΅Ρ‚ ΠΊΠΎΠ΄. Π­Ρ‚ΠΎ позволяСт Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ этот ΠΊΠΎΠ΄, Π½Π΅ вызывая ошибки Python.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. ИмСна классов Python Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π² Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ CapitalizedWords ΠΏΠΎ соглашСнию.НапримСр, класс для ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΏΠΎΡ€ΠΎΠ΄Ρ‹ собак, Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ Π΄ΠΆΠ΅ΠΊ-рассСл-Ρ‚Π΅Ρ€ΡŒΠ΅Ρ€, Π±ΡƒΠ΄Π΅Ρ‚ записан ΠΊΠ°ΠΊ JackRussellTerrier .

Класс Dog сСйчас Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ интСрСсСн, поэтому Π΄Π°Π²Π°ΠΉΡ‚Π΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π΅Π³ΠΎ украсим, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ свойства, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ всС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Dog . ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ ΠΈΠ· ряда свойств, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ имя, возраст, Ρ†Π²Π΅Ρ‚ ΡˆΠ΅Ρ€ΡΡ‚ΠΈ ΠΈ ΠΏΠΎΡ€ΠΎΠ΄Ρƒ. Для простоты ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ имя ΠΈ возраст.

Бвойства, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ всС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Dog , ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ .__init __ () . ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° создаСтся Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Dog , .__ init __ () устанавливаСт Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ состояниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, присваивая значСния свойствам ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Π’ΠΎ Π΅ΡΡ‚ΡŒ .__ init __ () ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π½ΠΎΠ²Ρ‹ΠΉ экзСмпляр класса.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ .__ init __ () любоС количСство ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², Π½ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ всСгда Π±ΡƒΠ΄Π΅Ρ‚ пСрСмСнная с ΠΈΠΌΠ΅Π½Π΅ΠΌ self . Когда создаСтся Π½ΠΎΠ²Ρ‹ΠΉ экзСмпляр класса, ΠΎΠ½ автоматичСски пСрСдаСтся Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ self Π² .__init __ () , Ρ‡Ρ‚ΠΎΠ±Ρ‹ для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² .

Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΎΠ±Π½ΠΎΠ²ΠΈΠΌ класс Dog с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° .__ init __ () , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ создаСт Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ .name ΠΈ .age :

  класс Бобака:
    def __init __ (я, имя, возраст):
        self.name = имя
        self.age = возраст
  

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ подпись ΠΌΠ΅Ρ‚ΠΎΠ΄Π° .__ init __ () ΠΈΠΌΠ΅Π΅Ρ‚ отступ Π² Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ ΠΏΡ€ΠΎΠ±Π΅Π»Π°. Π’ Ρ‚Π΅Π»Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π΅ΡΡ‚ΡŒ восСмь ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ².Π­Ρ‚ΠΎΡ‚ отступ ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎ Π²Π°ΠΆΠ΅Π½. Он сообщаСт Python, Ρ‡Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ .__ init __ () ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ классу Dog .

Π’ Ρ‚Π΅Π»Π΅ .__ init __ () Π΅ΡΡ‚ΡŒ Π΄Π²Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ self :

  1. self.name = name создаСт Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ с ΠΈΠΌΠ΅Π½Π΅ΠΌ name ΠΈ присваиваСт Π΅ΠΌΡƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° name .
  2. self.age = age создаСт Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ с ΠΈΠΌΠ΅Π½Π΅ΠΌ age ΠΈ присваиваСт Π΅ΠΌΡƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° age .

Атрибуты, созданныС Π² .__ init __ () , Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌΠΈ экзСмпляра . Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° экзСмпляра зависит ΠΎΡ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ экзСмпляра класса. ВсС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Dog ΠΈΠΌΠ΅ΡŽΡ‚ имя ΠΈ возраст, Π½ΠΎ значСния Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² name ΠΈ age Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ Π² зависимости ΠΎΡ‚ экзСмпляра Dog .

Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² класса — это Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для всСх экзСмпляров класса.Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ класса, присвоив Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π²Π½Π΅ .__ init __ () .

НапримСр, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ класс Dog ΠΈΠΌΠ΅Π΅Ρ‚ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ класса ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ разновидностСй со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ "Canis knownis" :

  класс Бобака:
    # Атрибут класса
    разновидности = "Canis knownis"

    def __init __ (я, имя, возраст):
        self.name = имя
        self.age = возраст
  

Атрибуты класса ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ нСпосрСдствСнно ΠΏΠΎΠ΄ ΠΏΠ΅Ρ€Π²ΠΎΠΉ строкой ΠΈΠΌΠ΅Π½ΠΈ класса ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ отступ Π² Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ ΠΏΡ€ΠΎΠ±Π΅Π»Π°.Им всСгда Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ присвоСно Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Когда создаСтся экзСмпляр класса, автоматичСски ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ класса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΈΡ… Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Π΅ значСния.

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

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Ρƒ нас Π΅ΡΡ‚ΡŒ класс Dog , Π΄Π°Π²Π°ΠΉΡ‚Π΅ создадим нСсколько собак!

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ экзСмпляра ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π² Python

ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ IDLE ΠΈ Π²Π²Π΅Π΄ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

>>>
  >>> класс Бобака:
...     ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ
  

Π­Ρ‚ΠΎ создаСт Π½ΠΎΠ²Ρ‹ΠΉ класс Dog Π±Π΅Π· Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ².

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈΠ· класса называСтся созданиСм экзСмпляра ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Dog , ввСдя имя класса, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ ΠΈ Π·Π°ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ ΠΊΡ€ΡƒΠ³Π»Ρ‹Π΅ скобки:

>>>
  >>> Π‘ΠΎΠ±Π°ΠΊΠ° ()
<__ main__.Dog ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² 0x106702d30>
  

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ вас Π΅ΡΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Dog ΠΏΠΎ адрСсу 0x106702d30 .Π­Ρ‚Π° Π·Π°Π±Π°Π²Π½ΠΎ выглядящая строка Π±ΡƒΠΊΠ² ΠΈ Ρ†ΠΈΡ„Ρ€ прСдставляСт собой адрСс памяти , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Π³Π΄Π΅ Π² памяти вашСго ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° хранится ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Dog . ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ адрСс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅ Π½Π° экранС, Π±ΡƒΠ΄Π΅Ρ‚ Π΄Ρ€ΡƒΠ³ΠΈΠΌ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ создайтС Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Dog :

>>>
  >>> Π‘ΠΎΠ±Π°ΠΊΠ° ()
<__ main__.Dog ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΏΠΎ адрСсу 0x0004ccc90>
  

Новый экзСмпляр Dog располоТСн ΠΏΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ адрСсу памяти. Π­Ρ‚ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ это ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½ΠΎΠ²Ρ‹ΠΉ экзСмпляр, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ отличаСтся ΠΎΡ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ экзСмпляра ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Dog , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ создали.

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ это ΠΏΠΎ-Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ, Π²Π²Π΅Π΄ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

>>>
  >>> a = Π‘ΠΎΠ±Π°ΠΊΠ° ()
>>> b = Π‘ΠΎΠ±Π°ΠΊΠ° ()
>>> Π° == Π±
Π›ΠΎΠΆΡŒ
  

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

Атрибуты класса ΠΈ экзСмпляра

Π’Π΅ΠΏΠ΅Ρ€ΡŒ создайтС Π½ΠΎΠ²Ρ‹ΠΉ класс Dog с Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠΌ класса .species ΠΈ двумя Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌΠΈ экзСмпляра с ΠΈΠΌΠ΅Π½Π΅ΠΌ .name ΠΈ .age :

. >>>
  >>> класс Бобака:
... разновидности = "Canisiliaris"
... def __init __ (я, имя, возраст):
... self.name = имя
... self.age = возраст
  

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ экзСмпляры ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² этого класса Dog , Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ значСния для name ΠΈ age .Если Π²Ρ‹ этого Π½Π΅ сдСлаСтС, Python выдаст TypeError :

. >>>
  >>> Π‘ΠΎΠ±Π°ΠΊΠ° ()
ΠžΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ (послСдний Π²Ρ‹Π·ΠΎΠ² послСдний):
  Π€Π°ΠΉΠ» "", строка 1, Π² 
    Π‘ΠΎΠ±Π°ΠΊΠ°()
TypeError: __init __ () отсутствуСт 2 ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°: 'name' ΠΈ 'age'
  

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌ name ΠΈ age , помСститС значСния Π² ΠΊΡ€ΡƒΠ³Π»Ρ‹Π΅ скобки послС ΠΈΠΌΠ΅Π½ΠΈ класса:

>>>
  >>> buddy = Dog ("ΠŸΡ€ΠΈΡΡ‚Π΅Π»ΡŒ", 9)
>>> miles = Dog ("Мили", 4)
  

Π­Ρ‚ΠΎ создаСт Π΄Π²Π° Π½ΠΎΠ²Ρ‹Ρ… экзСмпляра Dog — ΠΎΠ΄ΠΈΠ½ для дСвятилСтнСй собаки ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ Π‘Π°Π΄Π΄ΠΈ ΠΈ ΠΎΠ΄ΠΈΠ½ для Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ…Π»Π΅Ρ‚Π½Π΅ΠΉ собаки ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ Майлз.

ΠœΠ΅Ρ‚ΠΎΠ΄ .__ init __ () класса Dog ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚Ρ€ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°, Ρ‚Π°ΠΊ ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π² этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π΅ΠΌΡƒ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π²Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°?

Когда Π²Ρ‹ создаСтС экзСмпляр ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Dog , Python создаСт Π½ΠΎΠ²Ρ‹ΠΉ экзСмпляр ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠΌΡƒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρƒ .__ init __ () . Π­Ρ‚ΠΎ ΠΏΠΎ сущСству удаляСт ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ self , поэтому Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°Ρ… name ΠΈ age .

ПослС создания экзСмпляров Dog Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ ΠΈΡ… Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌ экзСмпляра, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ‚ΠΎΡ‡Π΅Ρ‡Π½ΡƒΡŽ Π½ΠΎΡ‚Π°Ρ†ΠΈΡŽ :

>>>
  >>> Π΄Ρ€ΡƒΠΆΠΈΡ‰Π΅.Π½Π°Π·Π²Π°Π½ΠΈΠ΅
'ΠŸΡ€ΠΈΡΡ‚Π΅Π»ΡŒ'
>>> buddy.age
9

>>> miles.name
'Майлз'
>>> miles.age
4
  

Π’Π°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌ класса:

>>>
  >>> buddy.species
'Canis knownis'
  

Одним ΠΈΠ· самых Π±ΠΎΠ»ΡŒΡˆΠΈΡ… прСимущСств использования классов для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ… являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ экзСмпляры Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹. ВсС экзСмпляры Dog ΠΈΠΌΠ΅ΡŽΡ‚ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ .species , .name ΠΈ .age , поэтому Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эти Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ с ΡƒΠ²Π΅Ρ€Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ, зная, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ всСгда Π±ΡƒΠ΄ΡƒΡ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

Π₯отя Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ, ΠΈΡ… значСния ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ‹ динамичСски:

>>>
  >>> buddy.age = 10
>>> buddy.age
10

>>> miles.species = "Felis silvestris"
>>> miles.species
'Felis silvestris'
  

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Ρ‹ измСняСтС Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ .age ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° buddy Π½Π° 10 . Π—Π°Ρ‚Π΅ΠΌ Π²Ρ‹ мСняСтС Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ .species ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° miles Π½Π° Β«Felis silvestrisΒ» , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся Ρ€Π°Π·Π½ΠΎΠ²ΠΈΠ΄Π½ΠΎΡΡ‚ΡŒΡŽ кошки.Π­Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Майлза довольно странной собакой, Π½ΠΎ это настоящий Python!

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

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ экзСмпляра

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ экзСмпляра — это Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Π²Π½ΡƒΡ‚Ρ€ΠΈ класса ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π·Π²Π°Π½Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ· экзСмпляра этого класса. Как ΠΈ .__ init __ () , ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° экзСмпляра всСгда являСтся self .

ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Π½ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° Π² IDLE ΠΈ Π²Π²Π΅Π΄ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ класс Dog :

  класс Бобака:
    разновидности = "Canis knownis"

    def __init __ (я, имя, возраст):
        self.name = имя
        self.age = возраст

    # ΠœΠ΅Ρ‚ΠΎΠ΄ экзСмпляра
    def описаниС (self):
        return f "{self.name} {self.age} Π»Π΅Ρ‚"

    # Π”Ρ€ΡƒΠ³ΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ экзСмпляра
    def Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ (сам, Π·Π²ΡƒΠΊ):
        return f "{self.name} Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ {Π·Π²ΡƒΠΊ}"
  

Π­Ρ‚ΠΎΡ‚ класс Dog ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° экзСмпляра:

  1. .description () Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ строку, ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‰ΡƒΡŽ имя ΠΈ возраст собаки.
  2. .speak () ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ с ΠΈΠΌΠ΅Π½Π΅ΠΌ sound ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ строку, ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‰ΡƒΡŽ имя собаки ΠΈ Π·Π²ΡƒΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠ·Π΄Π°Π΅Ρ‚ собака.

Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹ΠΉ класс Dog Π² Ρ„Π°ΠΉΠ» с ΠΈΠΌΠ΅Π½Π΅ΠΌ dog.py ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ F5 , Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ. Π—Π°Ρ‚Π΅ΠΌ ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ ΠΈ Π²Π²Π΅Π΄ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ вашСго экзСмпляра Π² дСйствии:

>>>
  >>> miles = Dog ("Мили", 4)

>>> миль.описаниС()
"ΠœΠ°ΠΉΠ»Π·Ρƒ 4 Π³ΠΎΠ΄Π°"

>>> miles.speak ("Π“Π°Π²-Π³Π°Π²")
'Майлз Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ Π“Π°Π²-Π“Π°Π²'

>>> miles.speak ("Bow Wow")
"Майлз Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚:" Π’Π°Ρƒ! "
  

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ классС Dog .description () Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ строку, ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‰ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ± экзСмплярС Dog miles . ΠŸΡ€ΠΈ написании собствСнных классов рСкомСндуСтся ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰ΠΈΠΉ строку, ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‰ΡƒΡŽ ΠΏΠΎΠ»Π΅Π·Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ± экзСмплярС класса. Однако .description () — Π½Π΅ самый питонский способ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это.

Когда Π²Ρ‹ создаСтС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ list , Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ print () для отобраТСния строки, которая выглядит ΠΊΠ°ΠΊ список:

>>>
  >>> names = ["Π€Π»Π΅Ρ‚Ρ‡Π΅Ρ€", "Дэвид", "Дэн"]
>>> ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ (ΠΈΠΌΠ΅Π½Π°)
["Π€Π»Π΅Ρ‚Ρ‡Π΅Ρ€", "Дэвид", "Дэн"]
  

Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚Π΅ () ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ миль :

>>>
  >>> ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ (ΠΌΠΈΠ»ΠΈ)
<__ main__.ΠžΠ±ΡŠΠ΅ΠΊΡ‚ "Π‘ΠΎΠ±Π°ΠΊΠ°" ΠΏΠΎ адрСсу 0x00aeff70>
  

Когда Π²Ρ‹ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚Π΅ (миль) , Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ Π·Π°Π³Π°Π΄ΠΎΡ‡Π½ΠΎΠ΅ сообщСниС ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ миль — это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Dog ΠΏΠΎ адрСсу памяти 0x00aeff70 . Π­Ρ‚ΠΎ сообщСниС бСсполСзно. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ пСчатаСтся, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ² ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ экзСмпляра с ΠΈΠΌΠ΅Π½Π΅ΠΌ .__ str __ () .

Π’ ΠΎΠΊΠ½Π΅ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚Π΅ имя ΠΌΠ΅Ρ‚ΠΎΠ΄Π° .description () класса Dog Π½Π° .__str __ () :

  класс Бобака:
    # ΠžΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ части класса Dog ΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ ΠΊΠ°ΠΊ Π΅ΡΡ‚ΡŒ

    # Π—Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ .description () Π½Π° __str __ ()
    def __str __ (сам):
        return f "{self.name} {self.age} Π»Π΅Ρ‚"
  

Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ» ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ F5 . Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚Π΅ (миль) , Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

>>>
  >>> miles = Dog ("Мили", 4)
>>> ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ (ΠΌΠΈΠ»ΠΈ)
"ΠœΠ°ΠΉΠ»Π·Ρƒ 4 Π³ΠΎΠ΄Π°"
  

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ .__init __ () ΠΈ .__ str __ () Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ dunder , ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ ΠΈ Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π΄Π²ΠΎΠΉΠ½Ρ‹ΠΌ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ. Π•ΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ уТасных ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для настройки классов Π² Python. Π₯отя это слишком слоТная Ρ‚Π΅ΠΌΠ° для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰Π΅ΠΉ ΠΊΠ½ΠΈΠ³ΠΈ ΠΏΠΎ Python, ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ dunder-ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² являСтся Π²Π°ΠΆΠ½ΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ освоСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования Π½Π° Python.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, ΠΊΠ°ΠΊ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ свои знания ΠΈ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ классы ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΈΡ… классов.

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ своС ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅

Π Π°Π·Π²Π΅Ρ€Π½ΠΈΡ‚Π΅ Π±Π»ΠΎΠΊ Π½ΠΈΠΆΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ своС ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅:

Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ класс Car с двумя Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌΠΈ экзСмпляра:

  1. .color , Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Ρ†Π²Π΅Ρ‚Π° автомобиля хранится Π² Π²ΠΈΠ΄Π΅ строки
  2. .
  3. . ΠŸΡ€ΠΎΠ±Π΅Π³ , Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ хранится количСство миль Π½Π° Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»Π΅ Π² Π²ΠΈΠ΄Π΅ Ρ†Π΅Π»ΠΎΠ³ΠΎ числа

Π—Π°Ρ‚Π΅ΠΌ создайтС экзСмпляры Π΄Π²ΡƒΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Car — синСго автомобиля с ΠΏΡ€ΠΎΠ±Π΅Π³ΠΎΠΌ 20 000 миль ΠΈ красного автомобиля с ΠΏΡ€ΠΎΠ±Π΅Π³ΠΎΠΌ 30 000 миль — ΠΈ распСчатайтС ΠΈΡ… Ρ†Π²Π΅Ρ‚Π° ΠΈ ΠΏΡ€ΠΎΠ±Π΅Π³.Π’Π°Ρˆ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ:

  Π£ синСй ΠΌΠ°ΡˆΠΈΠ½Ρ‹ 20 000 миль.
Π£ красной ΠΌΠ°ΡˆΠΈΠ½Ρ‹ 30 000 миль.
  

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π±Π»ΠΎΠΊ Π½ΠΈΠΆΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅:

Π‘Π½Π°Ρ‡Π°Π»Π° создайтС класс Car с Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌΠΈ экзСмпляра .color ΠΈ .m:

  класс ΠΠ²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ:
    def __init __ (сСбя, Ρ†Π²Π΅Ρ‚, ΠΏΡ€ΠΎΠ±Π΅Π³):
        self.color = Ρ†Π²Π΅Ρ‚
        собствСнный ΠΏΡ€ΠΎΠ±Π΅Π³ = ΠΏΡ€ΠΎΠ±Π΅Π³
  

Π¦Π²Π΅Ρ‚ ΠΈ ΠΏΡ€ΠΎΠ±Π΅Π³ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ .__init __ () ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°ΡŽΡ‚ΡΡ self.color ΠΈ self.m, Ρ‡Ρ‚ΠΎ создаСт Π΄Π²Π° Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° экзСмпляра.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π΄Π²Π° экзСмпляра Car :

  blue_car = ΠΠ²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ (Ρ†Π²Π΅Ρ‚ = "синий", ΠΏΡ€ΠΎΠ±Π΅Π³ = 20_000)
red_car = ΠΠ²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ (Ρ†Π²Π΅Ρ‚ = "красный", ΠΏΡ€ΠΎΠ±Π΅Π³ = 30_000)
  

ЭкзСмпляр blue_car создаСтся ΠΏΡƒΡ‚Π΅ΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ значСния «синий» Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ†Π²Π΅Ρ‚Π° ΠΈ 20_000 Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΏΡ€ΠΎΠ±Π΅Π³ .Аналогичным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ создаСтся red_car со значСниями «красный» ΠΈ 30_000 .

Π§Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°ΡΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ Ρ†Π²Π΅Ρ‚ ΠΈ ΠΏΡ€ΠΎΠ±Π΅Π³ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Car , Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅Π±Ρ€Π°Ρ‚ΡŒ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ , содСрТащий ΠΎΠ±Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°:

  Π½Π° ΠΌΠ°ΡˆΠΈΠ½Ρƒ Π² (blue_car, red_car):
    print (f "Π£ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ {car.color} {car.m900 :,} миль")
  

Π‘Ρ‚Ρ€ΠΎΠΊΠ° f Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ Ρ†ΠΈΠΊΠ»Π΅ для вставляСт Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ .color ΠΈ .m Π² строку ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ спСцификатор Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° :, для ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ ΠΏΡ€ΠΎΠ±Π΅Π³Π°, сгруппированного ΠΏΠΎ тысячам ΠΈ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… запятой.

ΠžΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выглядит Ρ‚Π°ΠΊ:

  Π£ синСй ΠΌΠ°ΡˆΠΈΠ½Ρ‹ 20 000 миль.
Π£ красной ΠΌΠ°ΡˆΠΈΠ½Ρ‹ 30 000 миль.
  

Когда Π±ΡƒΠ΄Π΅Ρ‚Π΅ Π³ΠΎΡ‚ΠΎΠ²Ρ‹, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ Ρ€Π°Π·Π΄Π΅Π»Ρƒ.

НаслСдованиС ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… классов Π² Python

НаслСдованиС — это процСсс, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ΄ΠΈΠ½ класс ΠΏΠ΅Ρ€Π΅Π½ΠΈΠΌΠ°Π΅Ρ‚ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ. Π’Π½ΠΎΠ²ΡŒ сформированныС классы Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΌΠΈ классами , Π° классы, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Π΅ ΠΎΡ‚ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΌΠΈ классами, Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΌΠΈ классами .

Π”ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ классы ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ ΠΈΠ»ΠΈ Ρ€Π°ΡΡˆΠΈΡ€ΡΡ‚ΡŒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΡ… классов. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ классы Π½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ всС Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π½ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ для Π½ΠΈΡ… самих.

Π₯отя аналогия Π½Π΅ идСальна, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎ наслСдовании ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΊΠ°ΠΊ ΠΎ гСнСтичСском наслСдовании.

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ‹ унаслСдовали Ρ†Π²Π΅Ρ‚ волос ΠΎΡ‚ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈ. Π­Ρ‚ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π²Ρ‹ Ρ€ΠΎΠ΄ΠΈΠ»ΠΈΡΡŒ. Допустим, Π²Ρ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ ΠΏΠΎΠΊΡ€Π°ΡΠΈΡ‚ΡŒ волосы Π² Ρ„ΠΈΠΎΠ»Π΅Ρ‚ΠΎΠ²Ρ‹ΠΉ Ρ†Π²Π΅Ρ‚.ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ, Ρ‡Ρ‚ΠΎ Ρƒ вашСй ΠΌΠ°Ρ‚Π΅Ρ€ΠΈ Π½Π΅Ρ‚ Ρ„ΠΈΠΎΠ»Π΅Ρ‚ΠΎΠ²Ρ‹Ρ… волос, Π²Ρ‹ всСго лишь ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ Ρ†Π²Π΅Ρ‚Π° волос, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ унаслСдовали ΠΎΡ‚ своСй ΠΌΠ°ΠΌΡ‹.

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

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠ°Ρ€ΠΊΠ° собак

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ Π½Π° ΠΌΠ³Π½ΠΎΠ²Π΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ΡΡŒ Π² ΡΠΎΠ±Π°Ρ‡ΡŒΠ΅ΠΌ ΠΏΠ°Ρ€ΠΊΠ΅.Π’ ΠΏΠ°Ρ€ΠΊΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ собак Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΠΎΡ€ΠΎΠ΄, ΠΈ всС ΠΎΠ½ΠΈ Π²Π΅Π΄ΡƒΡ‚ сСбя ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ.

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°Ρ€ΠΊ собак с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ классов Python. Класс Dog , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ написали Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅, ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π°Ρ‚ΡŒ собак ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΠΈ возрасту, Π½ΠΎ Π½Π΅ ΠΏΠΎ ΠΏΠΎΡ€ΠΎΠ΄Π΅.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ класс Dog Π² ΠΎΠΊΠ½Π΅ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°, Π΄ΠΎΠ±Π°Π²ΠΈΠ² Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ .breed :

  класс Бобака:
    разновидности = "Canis knownis"

    def __init __ (я, имя, возраст, ΠΏΠΎΡ€ΠΎΠ΄Π°):
        сСбя.name = имя
        self.age = возраст
        self.breed = ΠΏΠΎΡ€ΠΎΠ΄Π°
  

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ экзСмпляра, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Ρ€Π°Π½Π΅Π΅, здСсь ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π½Π΅ Π²Π°ΠΆΠ½Ρ‹ для этого обсуТдСния.

НаТмитС F5 , Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ». Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°Ρ€ΠΊ собак, создав нСсколько экзСмпляров Ρ€Π°Π·Π½Ρ‹Ρ… собак Π² ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΌ ΠΎΠΊΠ½Π΅:

>>>
  >>> miles = Dog ("Майлз", 4, "Π”ΠΆΠ΅ΠΊ-РассСл-Ρ‚Π΅Ρ€ΡŒΠ΅Ρ€")
>>> buddy = Π‘ΠΎΠ±Π°ΠΊΠ° (Β«Π‘Π°Π΄Π΄ΠΈΒ», 9, «Вакса»)
>>> jack = Π‘ΠΎΠ±Π°ΠΊΠ° (Β«Π”ΠΆΠ΅ΠΊΒ», 3, Β«Π‘ΡƒΠ»ΡŒΠ΄ΠΎΠ³Β»)
>>> jim = Dog (Β«Π”ΠΆΠΈΠΌΒ», 5, Β«Π‘ΡƒΠ»ΡŒΠ΄ΠΎΠ³Β»)
  

Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠΎΡ€ΠΎΠ΄Ρ‹ собак Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅.НапримСр, Ρƒ Π±ΡƒΠ»ΡŒΠ΄ΠΎΠ³ΠΎΠ² Π½ΠΈΠ·ΠΊΠΈΠΉ Π»Π°ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π²ΡƒΡ‡ΠΈΡ‚ ΠΊΠ°ΠΊ Π³Π°Π² , Π½ΠΎ Ρƒ такс Π±ΠΎΠ»Π΅Π΅ высокий Π»Π°ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ большС ΠΏΠΎΡ…ΠΎΠΆ Π½Π° Π³Π°Π² .

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ класс Dog , Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ строку для Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° sound ΠΈΠ· .speak () ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚Π΅ Π΅Π³ΠΎ Π² экзСмплярС Dog :

>>>
  >>> buddy.speak ("Π―ΠΏ")
'Π‘Π°Π΄Π΄ΠΈ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ Π―ΠΏ'

>>> jim.speak ("Π“Π°Π²")
'Π”ΠΆΠΈΠΌ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ Π“Π°Π²'

>>> Π΄ΠΎΠΌΠΊΡ€Π°Ρ‚.Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ("Π“Π°Π²")
'Π”ΠΆΠ΅ΠΊ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ Π“Π°Π²'
  

ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° строки ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π²Ρ‹Π·ΠΎΠ²Π΅ .speak () являСтся ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰Π΅ΠΉΡΡ ΠΈ Π½Π΅ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΉ. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, строка, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π°Ρ Π·Π²ΡƒΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠ·Π΄Π°Π΅Ρ‚ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ экзСмпляр Dog , Π΄ΠΎΠ»ΠΆΠ½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒΡΡ Π΅Π³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠΌ .breed , Π½ΠΎ здСсь Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΡƒΡŽ строку Π² .speak () ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ вызываСтся.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ с классом Dog , создав Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ класс для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠΎΡ€ΠΎΠ΄Ρ‹ собак.Π­Ρ‚ΠΎ позволяСт Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ наслСдуСт ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ класс, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для .speak () .

Π ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ классы ΠΈ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ классы

Π”Π°Π²Π°ΠΉΡ‚Π΅ создадим Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ класс для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· Ρ‚Ρ€Π΅Ρ… упомянутых Π²Ρ‹ΡˆΠ΅ ΠΏΠΎΡ€ΠΎΠ΄: Π΄ΠΆΠ΅ΠΊ-рассСл-Ρ‚Π΅Ρ€ΡŒΠ΅Ρ€, такса ΠΈ Π±ΡƒΠ»ΡŒΠ΄ΠΎΠ³.

Для справки, Π²ΠΎΡ‚ ΠΏΠΎΠ»Π½ΠΎΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ класса Dog :

  класс Бобака:
    разновидности = "Canis knownis"

    def __init __ (я, имя, возраст):
        сСбя.name = имя
        self.age = возраст

    def __str __ (сам):
        return f "{self.name} {self.age} Π»Π΅Ρ‚"

    def Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ (сам, Π·Π²ΡƒΠΊ):
        return f "{self.name} Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ {Π·Π²ΡƒΠΊ}"
  

ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ класс, Π²Ρ‹ создаСтС Π½ΠΎΠ²Ρ‹ΠΉ класс с Π΅Π³ΠΎ собствСнным ΠΈΠΌΠ΅Π½Π΅ΠΌ, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅Ρ‚Π΅ имя Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса Π² ΠΊΡ€ΡƒΠ³Π»Ρ‹Π΅ скобки. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ Π² Ρ„Π°ΠΉΠ» dog.py , Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ‚Ρ€ΠΈ Π½ΠΎΠ²Ρ‹Ρ… Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… класса класса Dog :

  класс JackRussellTerrier (Бобака):
    ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ

класс Вакса (Бобака):
    ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ

класс Π‘ΡƒΠ»ΡŒΠ΄ΠΎΠ³ (Π‘ΠΎΠ±Π°ΠΊΠ°):
    ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ
  

НаТмитС F5 , Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ».ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ² Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ классы, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ экзСмпляры собак ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ΠΏΠΎΡ€ΠΎΠ΄ Π² ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΌ ΠΎΠΊΠ½Π΅:

>>>
  >>> miles = JackRussellTerrier ("Мили", 4)
>>> buddy = Вакса ("Π‘Π°Π΄Π΄ΠΈ", 9)
>>> jack = Π‘ΡƒΠ»ΡŒΠ΄ΠΎΠ³ ("Π”ΠΆΠ΅ΠΊ", 3)
>>> jim = Π‘ΡƒΠ»ΡŒΠ΄ΠΎΠ³ ("Π”ΠΆΠΈΠΌ", 5)
  

ЭкзСмпляры Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… классов Π½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ всС Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса:

>>>
  >>> miles.species
'Canis knownis'

>>> Π΄Ρ€ΡƒΠΆΠΈΡ‰Π΅.Π½Π°Π·Π²Π°Π½ΠΈΠ΅
'ΠŸΡ€ΠΈΡΡ‚Π΅Π»ΡŒ'

>>> ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ (Π΄ΠΎΠΌΠΊΡ€Π°Ρ‚)
Π”ΠΆΠ΅ΠΊΡƒ 3 Π³ΠΎΠ΄Π°

>>> jim.speak ("Π“Π°Π²")
'Π”ΠΆΠΈΠΌ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ Π“Π°Π²'
  

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, ΠΊ ΠΊΠ°ΠΊΠΎΠΌΡƒ классу ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ встроСнный Ρ‚ΠΈΠΏ () :

>>>
  >>> Ρ‚ΠΈΠΏ (ΠΌΠΈΠ»ΠΈ)
<класс '__main __. JackRussellTerrier'>
  

Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ, Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, являСтся Π»ΠΈ миль Ρ‚Π°ΠΊΠΆΠ΅ экзСмпляром класса Dog ? Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ встроСнного isinstance () :

>>>
  >>> isinstance (мили, собака)
Π˜ΡΡ‚ΠΈΠ½Π½Ρ‹ΠΉ
  

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ isinstance () ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π΄Π²Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°: ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈ класс.Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ isinstance () провСряСт, являСтся Π»ΠΈ миль экзСмпляром класса Dog ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ True .

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ miles , buddy , jack ΠΈ jim ΡΠ²Π»ΡΡŽΡ‚ΡΡ экзСмплярами Dog , Π½ΠΎ miles Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ экзСмплярами Bulldog , Π° jack Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ экзСмплярами Dachshund :

>>>
  >>> isinstance (ΠΌΠΈΠ»ΠΈ, Π±ΡƒΠ»ΡŒΠ΄ΠΎΠ³)
Π›ΠΎΠΆΡŒ

>>> isinstance (Π”ΠΆΠ΅ΠΊ, Вакса)
Π›ΠΎΠΆΡŒ
  

Π’ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ±Ρ‰Π΅ΠΌ смыслС, всС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, созданныС ΠΈΠ· Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅Π³ΠΎ класса, ΡΠ²Π»ΡΡŽΡ‚ΡΡ экзСмплярами Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса, хотя ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π½Π΅ Π±Ρ‹Ρ‚ΡŒ экзСмплярами Π΄Ρ€ΡƒΠ³ΠΈΡ… Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… классов.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ создали Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ классы для Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΠΎΡ€ΠΎΠ΄ собак, Π΄Π°Π²Π°ΠΉΡ‚Π΅ Π΄Π°Π΄ΠΈΠΌ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠΎΡ€ΠΎΠ΄Π΅ своС собствСнноС Π·Π²ΡƒΡ‡Π°Π½ΠΈΠ΅.

Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ собаки Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΠΎΡ€ΠΎΠ΄ Π»Π°ΡŽΡ‚ ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ, Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° sound ΠΈΡ… ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² .speak () . Для этого Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ .speak () Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ класса для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠΎΡ€ΠΎΠ΄Ρ‹.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Π² Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ классС, Π²Ρ‹ опрСдСляСтС ΠΌΠ΅Ρ‚ΠΎΠ΄ с Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ Π² Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅ΠΌ классС.Π’ΠΎΡ‚ ΠΊΠ°ΠΊ это выглядит для класса JackRussellTerrier :

  класс JackRussellTerrier (Бобака):
    def Speak (self, sound = "Arf"):
        return f "{self.name} Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ {Π·Π²ΡƒΠΊ}"
  

Π’Π΅ΠΏΠ΅Ρ€ΡŒ .speak () ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Π² классС JackRussellTerrier с Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для Π·Π²ΡƒΠΊΠ° , установлСнным Π½Π° "Arf" .

ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚Π΅ dog.py с Π½ΠΎΠ²Ρ‹ΠΌ классом JackRussellTerrier ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ F5 , Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ».Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ .speak () Π² экзСмплярС JackRussellTerrier Π±Π΅Π· ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° Π² sound :

>>>
  >>> miles = JackRussellTerrier ("Мили", 4)
>>> miles.speak ()
'Майлз Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ Арф'
  

Иногда собаки Π»Π°ΡŽΡ‚ ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ, поэтому, Ссли Майлз злится ΠΈ Ρ€Ρ‹Ρ‡ΠΈΡ‚, Π²Ρ‹ всС Ρ€Π°Π²Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ·Π²ΠΎΠ½ΠΈΡ‚ΡŒ ΠΏΠΎ Π½ΠΎΠΌΠ΅Ρ€Ρƒ .speak () с Π΄Ρ€ΡƒΠ³ΠΈΠΌ Π·Π²ΡƒΠΊΠΎΠΌ:

>>>
  >>> miles.speak ("Π“Ρ€Ρ€Ρ€")
'Майлз Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ Π“Ρ€Ρ€'
  

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

НапримСр, Π² ΠΎΠΊΠ½Π΅ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π° ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚Π΅ строку, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ .speak () Π² классС Dog :

  класс Бобака:
    # ΠžΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ ΠΊΠ°ΠΊ Π΅ΡΡ‚ΡŒ

    # Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚Π΅ строку, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡƒΡŽ .speak ()
    def Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ (сам, Π·Π²ΡƒΠΊ):
        return f "{self.name} Π»Π°ΠΉ: {Π·Π²ΡƒΠΊ}"
  

Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ» ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ F5 . Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ создаСтС Π½ΠΎΠ²Ρ‹ΠΉ экзСмпляр Bulldog с ΠΈΠΌΠ΅Π½Π΅ΠΌ jim , jim.Speak () Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½ΠΎΠ²ΡƒΡŽ строку:

>>>
  >>> jim = Π‘ΡƒΠ»ΡŒΠ΄ΠΎΠ³ ("Π”ΠΆΠΈΠΌ", 5)
>>> jim.speak ("Π“Π°Π²")
'Π”ΠΆΠΈΠΌ Π»Π°Π΅Ρ‚: Π“Π°Π²'
  

Однако Π²Ρ‹Π·ΠΎΠ² .speak () Π² экзСмплярС JackRussellTerrier Π½Π΅ ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ ΡΡ‚ΠΈΠ»ΡŒ Π²Ρ‹Π²ΠΎΠ΄Π°:

>>>
  >>> miles = JackRussellTerrier ("Мили", 4)
>>> miles.speak ()
'Майлз Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ Арф'
  

Иногда ΠΈΠΌΠ΅Π΅Ρ‚ смысл ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса.Но Π² этом случаС ΠΌΡ‹ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ класс JackRussellTerrier потСрял Π»ΡŽΠ±Ρ‹Π΅ измСнСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ внСсСны Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ строки Dog.speak () .

Для этого Π²Π°ΠΌ всС Ρ€Π°Π²Π½ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ .speak () для Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅Π³ΠΎ класса JackRussellTerrier . Но вмСсто явного опрСдСлСния Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ строки Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ .speak () класса Dog Π²Π½ΡƒΡ‚Ρ€ΠΈ Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅Π³ΠΎ класса .speak () , ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ‚Π΅ ΠΆΠ΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π»ΠΈ JackRussellTerrier.Π“ΠΎΠ²ΠΎΡ€ΠΈ () .

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΌΡƒ классу ΠΈΠ· ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅Π³ΠΎ класса, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ super () :

  класс JackRussellTerrier (Бобака):
    def Speak (self, sound = "Arf"):
        Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ супСр (). Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ (Π·Π²ΡƒΠΊ)
  

Когда Π²Ρ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚Π΅ super (). Speak (Π·Π²ΡƒΠΊ) Π²Π½ΡƒΡ‚Ρ€ΠΈ JackRussellTerrier , Python ΠΈΡ‰Π΅Ρ‚ Π² Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ классС Dog ΠΌΠ΅Ρ‚ΠΎΠ΄ .speak () ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Π΅Π³ΠΎ с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ sound .

ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚Π΅ dog.py , Π΄ΠΎΠ±Π°Π²ΠΈΠ² Π½ΠΎΠ²Ρ‹ΠΉ класс JackRussellTerrier . Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ» ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ F5 , Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ ΠΏΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΌ ΠΎΠΊΠ½Π΅:

>>>
  >>> miles = JackRussellTerrier ("Мили", 4)
>>> miles.speak ()
Майлз Π»Π°Π΅Ρ‚: Арф
  

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚Π΅ miles.speak () , Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, ΠΎΡ‚Ρ€Π°ΠΆΠ°ΡŽΡ‰ΠΈΠΉ Π½ΠΎΠ²ΠΎΠ΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² классС Dog .

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… иСрархия классов ΠΎΡ‡Π΅Π½ΡŒ проста.Класс JackRussellTerrier ΠΈΠΌΠ΅Π΅Ρ‚ СдинствСнный Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ класс — Dog . Π’ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… иСрархия классов ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ довольно слоТной.

super () Π΄Π΅Π»Π°Π΅Ρ‚ Π³ΠΎΡ€Π°Π·Π΄ΠΎ большС, Ρ‡Π΅ΠΌ просто ΠΈΡ‰Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΠ»ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ Π² Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ классС. Он просматриваСт всю ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΡŽ классов Π² поисках ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΈΠ»ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°. Если Π²Ρ‹ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚Π΅ остороТны, super () ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π°Ρ‚ΡŒ ΡƒΠ΄ΠΈΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹.

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ своС ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅

Π Π°Π·Π²Π΅Ρ€Π½ΠΈΡ‚Π΅ Π±Π»ΠΎΠΊ Π½ΠΈΠΆΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ своС ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅:

Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ класс GoldenRetriever , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ наслСдуСтся ΠΎΡ‚ класса Dog .ΠŸΡ€ΠΈΡΠ²ΠΎΠΉΡ‚Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρƒ sound для GoldenRetriever.speak () Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ "Bark" . Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ для Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса Dog :

.
  класс Бобака:
    разновидности = "Canis knownis"

    def __init __ (я, имя, возраст):
        self.name = имя
        self.age = возраст

    def __str __ (сам):
        return f "{self.name} {self.age} Π»Π΅Ρ‚"

    def Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ (сам, Π·Π²ΡƒΠΊ):
        return f "{self.name} Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ {Π·Π²ΡƒΠΊ}"
  

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π±Π»ΠΎΠΊ Π½ΠΈΠΆΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅:

Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ класс с ΠΈΠΌΠ΅Π½Π΅ΠΌ GoldenRetriever , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ наслСдуСтся ΠΎΡ‚ класса Dog ΠΈ пСрСопрСдСляСт .Speak () ΠΌΠ΅Ρ‚ΠΎΠ΄:

  класс GoldenRetriever (Бобака):
    def Speak (self, sound = "Π›Π°ΠΉ"):
        Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ супСр (). Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ (Π·Π²ΡƒΠΊ)
  

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π·Π²ΡƒΠΊ Π² GoldenRetriever.speak () ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Β«Π›Π°ΠΉΒ» . Π—Π°Ρ‚Π΅ΠΌ super () ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Π²Ρ‹Π·ΠΎΠ²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° .speak () Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса с Ρ‚Π΅ΠΌ ΠΆΠ΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ, ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹ΠΌ Π² sound , Ρ‡Ρ‚ΠΎ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ .speak () класса GoldenRetriever .

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Из этого руководства Π²Ρ‹ ΡƒΠ·Π½Π°Π»ΠΈ ΠΎΠ± ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ (ООП) Π½Π° Python. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ соврСмСнных языков программирования, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Java, C # ΠΈ C ++, ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ°ΠΌ ООП, поэтому ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ здСсь знания Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΡ‹ нСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΡƒΠ΄Π° ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ваша ΠΊΠ°Ρ€ΡŒΠ΅Ρ€Π° программиста.

Π’ этом руководствС Π²Ρ‹ ΡƒΠ·Π½Π°Π»ΠΈ, ΠΊΠ°ΠΊ:

  • ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅ класс , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся своСго Ρ€ΠΎΠ΄Π° схСмой для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°
  • Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ экзСмпляр ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈΠ· класса
  • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ для опрСдСлСния свойств ΠΈ повСдСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°
  • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ наслСдованиС для создания Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… классов ΠΈΠ· Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса
  • Бсылка Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ super ()
  • ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, наслСдуСтся Π»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ класса, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ isinstance ()

Если Π²Π°ΠΌ ΠΏΠΎΠ½Ρ€Π°Π²ΠΈΠ»ΠΎΡΡŒ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΡƒΠ·Π½Π°Π»ΠΈ ΠΈΠ· этого ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΈΠ· ΠΊΠ½ΠΈΠ³ΠΈ ΠžΡΠ½ΠΎΠ²Ρ‹ Python: ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΎΠ΅ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² Python 3 , Ρ‚ΠΎ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΡ‡Ρ‚ΠΈΡ‚Π΅ ΠΎΡΡ‚Π°Π²ΡˆΡƒΡŽΡΡ Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠ½ΠΈΠ³ΠΈ.

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

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

ΠžΠ±Ρ‰Π΅Π΅ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅

Π₯отя Python являСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ языком Π±Π΅Π· суСты ΠΈ ΠΏΡ€ΠΈΠ΄ΠΈΡ€ΠΎΠΊ, ΠΌΡ‹ Π΄ΠΎ сих ΠΏΠΎΡ€ Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π½ΠΎ ΠΈΠ·Π±Π΅Π³Π°Π»ΠΈ рассмотрСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования (ООП) Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… Π³Π»Π°Π²Π°Ρ… нашСго руководства ΠΏΠΎ Python. ΠœΡ‹ пропустили ООП, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΡƒΠ±Π΅ΠΆΠ΄Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ Π»Π΅Π³Ρ‡Π΅ ΠΈ ΡƒΠ²Π»Π΅ΠΊΠ°Ρ‚Π΅Π»ΡŒΠ½Π΅Π΅ Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ Python, Π½Π΅ зная всСх Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования.

НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΈΠ·Π±Π΅Π³Π°Π»ΠΈ ООП, ΠΎΠ½ΠΎ всСгда присутствовало Π² упраТнСниях ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… нашСго курса. ΠœΡ‹ использовали ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈΠ· классов, Π½Π΅ объясняя Π΄ΠΎΠ»ΠΆΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΈΡ… ΠΏΡ€Π΅Π΄Ρ‹ΡΡ‚ΠΎΡ€ΠΈΡŽ ООП. Π’ этой Π³Π»Π°Π²Π΅ ΠΌΡ‹ рассмотрим Ρ‚ΠΎ, Ρ‡Π΅Π³ΠΎ Π΄ΠΎ сих ΠΏΠΎΡ€ Π½Π΅ Ρ…Π²Π°Ρ‚Π°Π»ΠΎ. ΠœΡ‹ прСдоставим Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования Π² Ρ†Π΅Π»ΠΎΠΌ ΠΈ Π² особСнности ООП-ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° Python. ООП — ΠΎΠ΄ΠΈΠ½ ΠΈΠ· самых ΠΌΠΎΡ‰Π½Ρ‹Ρ… инструмСнтов Python, Π½ΠΎ, Ρ‚Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π²Π°ΠΌ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‚.Π΅.Π΅. Π²Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΌΠΎΡ‰Π½Ρ‹Π΅ ΠΈ эффСктивныС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π±Π΅Π· Π½Π΅Π³ΠΎ.

Π₯отя ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρ‰ΠΈΠΊΠΈ ΠΈ программисты ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ ООП соврСмСнной ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠΎΠΉ программирования, Π΅Π΅ ΠΊΠΎΡ€Π½ΠΈ уходят Π² 1960-Π΅ Π³ΠΎΠ΄Ρ‹. ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ языком программирования, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Π±Ρ‹Π» Simula 67. Как слСдуСт ΠΈΠ· названия, Simula 67 Π±Ρ‹Π»Π° прСдставлСна ​​в 1967 Π³ΠΎΠ΄Ρƒ. Π’Π°ΠΆΠ½Ρ‹ΠΌ ΠΏΡ€ΠΎΡ€Ρ‹Π²ΠΎΠΌ Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ стал язык программирования Smalltalk Π² 1970-Ρ….

Π’Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ основных ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ ΠΎΡ€ΠΈΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΈ Ρ‚ΠΎ, ΠΊΠ°ΠΊ Python Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с Π½ΠΈΠΌΠΈ, Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ этого руководства ΠΏΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ:

  • Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡ
  • Абстракция Π΄Π°Π½Π½Ρ‹Ρ…
  • ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ
  • НаслСдованиС

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΌΡ‹ Π½Π°Ρ‡Π½Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π» ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ООП ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Python, ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Π΄Π°Ρ‚ΡŒ Π²Π°ΠΌ ΠΎΠ±Ρ‰Π΅Π΅ прСдставлСниС ΠΎΠ± ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ.Для этого Ρ…ΠΎΡ‚ΠΈΠΌ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ вашС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ. Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠ΄ΡƒΠΌΠ°Π΅ΠΌ ΠΎ Ρ‚Π°ΠΊΠΎΠΌ ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠΌ, ΠΊΠ°ΠΊ «Британская Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Β» Π² Π›ΠΎΠ½Π΄ΠΎΠ½Π΅ ΠΈΠ»ΠΈ «Нью-Йоркская публичная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Β» Π² Нью-Π™ΠΎΡ€ΠΊΠ΅. Если это ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ сСбС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π² ΠŸΠ°Ρ€ΠΈΠΆΠ΅, Π‘Π΅Ρ€Π»ΠΈΠ½Π΅, ΠžΡ‚Ρ‚Π°Π²Π΅ ΠΈΠ»ΠΈ Π’ΠΎΡ€ΠΎΠ½Ρ‚ΠΎ *. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ… содСрТит ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡƒΡŽ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ ΠΊΠ½ΠΈΠ³, пСриодичСских ΠΈΠ·Π΄Π°Π½ΠΈΠΉ, Π³Π°Π·Π΅Ρ‚, Π°ΡƒΠ΄ΠΈΠΎΠΊΠ½ΠΈΠ³, Ρ„ΠΈΠ»ΡŒΠΌΠΎΠ² ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, сущСствуСт Π΄Π²Π° ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½Ρ‹Ρ… способа хранСния ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π° Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ Β«Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΎΠ³ΠΎ доступа», ΠΊΠΎΠ³Π΄Π° Ρ‚ΠΎΠ²Π°Ρ€ Π½Π΅ отобраТаСтся Π½Π° ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… ΠΏΠΎΠ»ΠΊΠ°Ρ….Π’ этой систСмС ΠΎΠ±ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ пСрсонал доставляСт ΠΊΠ½ΠΈΠ³ΠΈ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ ΠΏΠΎ запросу. Π”Ρ€ΡƒΠ³ΠΎΠΉ способ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ — ΠΏΠΎΠ»ΠΊΠΈ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ доступом, Ρ‚Π°ΠΊΠΆΠ΅ извСстныС ΠΊΠ°ΠΊ Β«ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ ΠΏΠΎΠ»ΠΊΠΈΒ». Β«ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉΒ» ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ для всСх ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Π° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΎΠ±ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ пСрсонал. Π’ этом случаС ΠΊΠ½ΠΈΠ³ΠΈ Π²Ρ‹ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎ. Π˜ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ языки, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ C, ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΠΎΡ‡Π½Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ доступом. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ всС. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π°ΠΉΡ‚ΠΈ ΠΊΠ½ΠΈΠ³ΠΈ ΠΈ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ ΠΈΡ… ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π½Π° Π½ΡƒΠΆΠ½ΡƒΡŽ ΠΏΠΎΠ»ΠΊΡƒ. НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ это Ρ…ΠΎΡ€ΠΎΡˆΠΎ для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Π² долгосрочной пСрспСктивС это ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Ρ‹ΠΌ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌ.НапримСр, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊΠ½ΠΈΠ³ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ потСряны, поэтому ΠΈΡ… Π±ΡƒΠ΄Π΅Ρ‚ слоТно Π½Π°ΠΉΡ‚ΠΈ снова. Как Π²Ρ‹ ΡƒΠΆΠ΅ догадались, Β«Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ доступ» ΠΌΠΎΠΆΠ½ΠΎ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ. Аналогию ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ: ΠΊΠ½ΠΈΠ³ΠΈ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ Π΄Π°Π½Π½Ρ‹ΠΌ Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. Доступ ΠΊ ΠΊΠ½ΠΈΠ³Π°ΠΌ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½, ΠΊΠ°ΠΊ ΠΈ доступ ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ Π² ООП. ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΠΊΠ½ΠΈΠ³Ρƒ ΠΌΠΎΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π΅Ρ€Π΅Π· сотрудников. Π¨Ρ‚Π°Ρ‚Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ Π² ООП, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΡŽΡ‚ доступ ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ.Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π΄Π°Π½Π½Ρ‹Π΅ — часто Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌΠΈ — Π² Ρ‚Π°ΠΊΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ скрытыС ΠΈ Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Ρ‹Π΅ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΎΠΉ, ΠΈ ΠΊ Π½ΠΈΠΌ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ Π² контСкстС ООП. ΠŸΠΎΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… Π² Β«ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΡƒΒ» называСтся инкапсуляция . Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ класс, Π° ΠΊΠ½ΠΈΠ³Ρƒ — ΠΊΠ°ΠΊ экзСмпляр ΠΈΠ»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ этого класса. Π’ΠΎΠΎΠ±Ρ‰Π΅ говоря, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ опрСдСляСтся классом. Класс — это Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅ описаниС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ спроСктирован ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΠ½ ΠΈΠΌΠ΅Π΅Ρ‚.Π­Ρ‚ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ экзСмплярами. ВыраТСния Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ синонимы. НС слСдуСт ΠΏΡƒΡ‚Π°Ρ‚ΡŒ класс с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ.

ООП на Python

Π₯отя ΠΌΡ‹ Π½Π΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈ ΠΎ классах ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ ΠΎΡ€ΠΈΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… Π³Π»Π°Π²Π°Ρ…, ΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ с классами всС врСмя. ЀактичСски, Π² Python всС являСтся классом. Π“Π²ΠΈΠ΄ΠΎ Π²Π°Π½ Россум Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π» язык ΠΏΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ «всС пСрвоклассно». Он писал: «Одной ΠΈΠ· ΠΌΠΎΠΈΡ… Ρ†Π΅Π»Π΅ΠΉ Π² Python Π±Ρ‹Π»ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ всС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π±Ρ‹Π»ΠΈΒ« пСрвоклассными Β».Β«Π­Ρ‚ΠΈΠΌ я ΠΈΠΌΠ΅Π» Π² Π²ΠΈΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‚Π΅Π», Ρ‡Ρ‚ΠΎΠ±Ρ‹ всС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ имя Π½Π° языкС (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ†Π΅Π»Ρ‹Π΅ числа, строки, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, классы, ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ Ρ‚. Π”.), ИмСли ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΉ статус. Π’ΠΎ Π΅ΡΡ‚ΡŒ, ΠΎΠ½ΠΈ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹Ρ‚ΡŒ Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½Π½Ρ‹Π΅ Π² списки, сохранСнныС Π² словарях, ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Π΅ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈ Ρ‚. Π΄. » (Π‘Π»ΠΎΠ³, Π˜ΡΡ‚ΠΎΡ€ΠΈΡ Python, 27 фСвраля 2009 Π³.) Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, «всС» обрабатываСтся ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ, всС являСтся классом: Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ значСниями, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΆΠ΅, ΠΊΠ°ΠΊ списки, Ρ†Π΅Π»Ρ‹Π΅ числа ΠΈΠ»ΠΈ числа с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ… являСтся экзСмплярами своих ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… классов.

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

Π”Π°Π²Π°ΠΉΡ‚Π΅ свяТСм всС наши Π½ΠΎΠ²Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ знания вмСстС, пройдя нСсколько ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ проСктирования Π½Π° довольно Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅. БистСма, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, прСдставляСт собой Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹ΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ отслСТивали свои запасы Π½Π° протяТСнии Π²Π΅ΠΊΠΎΠ², ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π½Ρ‹Π΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ, Π° Π² послСднСС врСмя — элСктронныС рССстры. Π’ соврСмСнных Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ… Π΅ΡΡ‚ΡŒ Π²Π΅Π±-ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒ Ρƒ сСбя Π΄ΠΎΠΌΠ°.

НачнСм с Π°Π½Π°Π»ΠΈΠ·Π°.ΠœΠ΅ΡΡ‚Π½Ρ‹ΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ€ΡŒ попросил нас Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ-ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΈΡ… старая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π° Π±Π°Π·Π΅ Windows XP ΡƒΡ€ΠΎΠ΄Π»ΠΈΠ²Π° ΠΈ устарСла. Π­Ρ‚ΠΎ Π½Π΅ Π΄Π°Π΅Ρ‚ Π½Π°ΠΌ подробностСй, Π½ΠΎ ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΌΡ‹ Π½Π°Ρ‡Π½Π΅ΠΌ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, Π΄Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΡƒΠΆΠ΅ Π·Π½Π°Π΅ΠΌ ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ.

ΠšΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ содСрТат списки ΠΊΠ½ΠΈΠ³. Π›ΡŽΠ΄ΠΈ ΠΈΡ‰ΡƒΡ‚ ΠΈΡ…, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ ΠΊΠ½ΠΈΠ³ΠΈ ΠΏΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π°ΠΌ, с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌΠΈ названиями ΠΈΠ»ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ Π°Π²Ρ‚ΠΎΡ€ΠΎΠΌ. Книги ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎ ΠΌΠ΅ΠΆΠ΄ΡƒΠ½Π°Ρ€ΠΎΠ΄Π½ΠΎΠΌΡƒ стандартному Π½ΠΎΠΌΠ΅Ρ€Ρƒ ΠΊΠ½ΠΈΠ³ΠΈ ( ISBN ).КаТдая ΠΊΠ½ΠΈΠ³Π° ΠΈΠΌΠ΅Π΅Ρ‚ Π½ΠΎΠΌΠ΅Ρ€ Π² дСсятичной систСмС Π”ΡŒΡŽΠΈ ( DDS ), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π½Π°ΠΉΡ‚ΠΈ Π΅Π΅ Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΏΠΎΠ»ΠΊΠ΅.

Π­Ρ‚ΠΎΡ‚ простой Π°Π½Π°Π»ΠΈΠ· ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π°ΠΌ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π² систСмС. ΠœΡ‹ быстро опрСдСляСм Книга ΠΊΠ°ΠΊ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ с ΡƒΠΆΠ΅ упомянутыми нСсколькими Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌΠΈ, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ Π°Π²Ρ‚ΠΎΡ€, Π½Π°Π·Π²Π°Π½ΠΈΠ΅, Ρ‚Π΅ΠΌΠ°, ISBN ΠΈ Π½ΠΎΠΌΠ΅Ρ€ DDS, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ ΠΊΠ°ΠΊ своСго Ρ€ΠΎΠ΄Π° ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ для ΠΊΠ½ΠΈΠ³.

ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ Π·Π°ΠΌΠ΅Ρ‡Π°Π΅ΠΌ нСсколько Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠ»ΠΈ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π½ΡƒΠΆΠ΄Π°Ρ‚ΡŒΡΡ Π² ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π² систСмС.Для Ρ†Π΅Π»Π΅ΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈΠ·Π°Ρ†ΠΈΠΈ всС, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ для поиска ΠΊΠ½ΠΈΠ³ΠΈ ΠΏΠΎ Π°Π²Ρ‚ΠΎΡ€Ρƒ, — это Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ author_name Π² ΠΊΠ½ΠΈΠ³Π΅. Однако Π°Π²Ρ‚ΠΎΡ€Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ, ΠΈ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°Ρ…ΠΎΡ‚Π΅Ρ‚ΡŒ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΠ± Π°Π²Ρ‚ΠΎΡ€Π΅. Π Π°Π·ΠΌΡ‹ΡˆΠ»ΡΡ Π½Π°Π΄ этим, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΡΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρƒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΊΠ½ΠΈΠ³ нСсколько Π°Π²Ρ‚ΠΎΡ€ΠΎΠ². Π’Π½Π΅Π·Π°ΠΏΠ½ΠΎ идСя ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ author_name для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² каТСтся Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π³Π»ΡƒΠΏΠΎΠΉ. Бписок Π°Π²Ρ‚ΠΎΡ€ΠΎΠ², связанных с ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΎΠΉ, явно Π»ΡƒΡ‡ΡˆΠ΅.

Бвязь ΠΌΠ΅ΠΆΠ΄Ρƒ Π°Π²Ρ‚ΠΎΡ€ΠΎΠΌ ΠΈ ΠΊΠ½ΠΈΠ³ΠΎΠΉ явно связана с ассоциациСй, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π²Ρ‹ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ скаТСтС , Ρ‡Ρ‚ΠΎ ΠΊΠ½ΠΈΠ³Π° являСтся Π°Π²Ρ‚ΠΎΡ€ΠΎΠΌ (это Π½Π΅ наслСдованиС), ΠΈ ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ Ρƒ ΠΊΠ½ΠΈΠ³ΠΈ Π΅ΡΡ‚ΡŒ Π°Π²Ρ‚ΠΎΡ€ , хотя грамматичСски ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅, Π½Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π°Π²Ρ‚ΠΎΡ€Ρ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‡Π°ΡΡ‚ΡŒΡŽ ΠΊΠ½ΠΈΠ³ (это Π½Π΅ агрСгация).Π”Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, любой Π°Π²Ρ‚ΠΎΡ€ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ связан с нСсколькими ΠΊΠ½ΠΈΠ³Π°ΠΌΠΈ.

ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ (ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ всСгда ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌΠΈ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚Π°ΠΌΠΈ для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²) ΠΏΠΎΠ»ΠΊΠ° . Полка — это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½ΡƒΠΆΠ½ΠΎ ΡΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² систСмС ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈΠ·Π°Ρ†ΠΈΠΈ? Как ΠΌΡ‹ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅ΠΌ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΏΠΎΠ»ΠΊΡƒ? Π§Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚, Ссли ΠΊΠ½ΠΈΠ³Π° Π±ΡƒΠ΄Π΅Ρ‚ сохранСна Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΠ»ΠΊΠΈ, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½Π° Π² Π½Π°Ρ‡Π°Π»ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΠΎΠ»ΠΊΠΈ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ новая ΠΊΠ½ΠΈΠ³Π° Π±Ρ‹Π»Π° вставлСна ​​на ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΡƒΡŽ ΠΏΠΎΠ»ΠΊΡƒ?

DDS Π±Ρ‹Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Π½Π°ΠΉΡ‚ΠΈ физичСскиС ΠΊΠ½ΠΈΠ³ΠΈ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅.Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, хранСния Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° DDS вмСстС с ΠΊΠ½ΠΈΠ³ΠΎΠΉ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ достаточно, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ Π΅Π³ΠΎ, нСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Π½Π° ΠΊΠ°ΠΊΠΎΠΉ ΠΏΠΎΠ»ΠΊΠ΅ ΠΎΠ½ хранится. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ, ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, Π½Π° врСмя ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΠΊΡƒ ΠΈΠ· нашСго списка ΠΊΠΎΠ½ΠΊΡƒΡ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

Π”Ρ€ΡƒΠ³ΠΎΠΉ ΡΠΎΠΌΠ½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² систСмС — это ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ. НуТно Π»ΠΈ Π½Π°ΠΌ Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π·Π½Π°Ρ‚ΡŒ ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π΅Π³ΠΎ имя, адрСс ΠΈΠ»ΠΈ список просрочСнных ΠΊΠ½ΠΈΠ³? Пока Ρ‡Ρ‚ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ€ΡŒ сказал Π½Π°ΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ, Ρ‡Ρ‚ΠΎ ΠΈΠΌ Π½ΡƒΠΆΠ΅Π½ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³; ΠΎΠ½ΠΈ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ сказали ΠΎΠ± отслСТивании подписок ΠΈΠ»ΠΈ просрочСнных ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ.Π’ Π³Π»ΡƒΠ±ΠΈΠ½Π΅ Π΄ΡƒΡˆΠΈ ΠΌΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΡ‚ΠΌΠ΅Ρ‡Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π°Π²Ρ‚ΠΎΡ€Ρ‹ ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ — это Ρ€Π°Π·Π½Ρ‹Π΅ люди; здСсь Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ наслСдования.

Π’ цСлях ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΡ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ ΠΏΠΎΠΊΠ° Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΊΠ°Ρ‚ΡŒ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅, Π½ΠΎ Π½Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π² систСмС, ΠΊΡ€ΠΎΠΌΠ΅ прСдоставлСния интСрфСйса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΠΈΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ поиск.

ΠœΡ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈ нСсколько Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² Π² ΠΊΠ½ΠΈΠ³Π΅, Π½ΠΎ ΠΊΠ°ΠΊΠΈΠΌΠΈ свойствами ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³? Π•ΡΡ‚ΡŒ Π»ΠΈ Π² ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°? НуТно Π»ΠΈ ΠΈΡ… ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ? ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ ΠΊΠ°ΠΊΠΈΠΌ-Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ ΠΊΠ½ΠΈΠ³, Π½ΠΎ этот список, вСроятно, Π½Π΅ являСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ общСдоступного интСрфСйса.

А ΠΊΠ°ΠΊ насчСт повСдСния? Π’ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ явно Π½ΡƒΠΆΠ΅Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄ поиска, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠΎ Π°Π²Ρ‚ΠΎΡ€Π°ΠΌ, названиям ΠΈ Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ°ΠΌ. Π•ΡΡ‚ΡŒ Π»ΠΈ ΠΊΠ°ΠΊΠΎΠ΅-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΊΠ½ΠΈΠ³Π°Ρ…? НуТСн Π»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ просмотра? Или ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ просмотр ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρƒ ΠΏΠ΅Ρ€Π²ΠΎΠΉ страницы, Π° Π½Π΅ ΠΏΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ?

Вопросы Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ обсуТдСнии ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‡Π°ΡΡ‚ΡŒΡŽ Ρ„Π°Π·Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°. Но Π² сочСтании с вопросами ΠΌΡ‹ ΡƒΠΆΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈ нСсколько ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‡Π°ΡΡ‚ΡŒΡŽ Π΄ΠΈΠ·Π°ΠΉΠ½Π°. Π”Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ Π²ΠΈΠ΄Π΅Π»ΠΈ, — это нСсколько ΠΌΠΈΠΊΡ€ΠΎΠ»ΠΈΡ‚Ρ€ΠΎΠ² ΠΌΠ΅ΠΆΠ΄Ρƒ Π°Π½Π°Π»ΠΈΠ·ΠΎΠΌ ΠΈ Π΄ΠΈΠ·Π°ΠΉΠ½ΠΎΠΌ.

Π‘ΠΊΠΎΡ€Π΅Π΅ всСго, всС эти ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄ΡƒΡ‚ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΉ встрСчС с Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ€Π΅ΠΌ. Однако ΠΏΠ΅Ρ€Π΅Π΄ этой встрСчСй ΠΌΡ‹ ΡƒΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°Π±Ρ€ΠΎΡΠ°Ρ‚ΡŒ самый Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ Π΄ΠΈΠ·Π°ΠΉΠ½ для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ:

Π’ΠΎΠΎΡ€ΡƒΠΆΠΈΠ²ΡˆΠΈΡΡŒ этой Π±Π°Π·ΠΎΠ²ΠΎΠΉ схСмой ΠΈ ΠΊΠ°Ρ€Π°Π½Π΄Π°ΡˆΠΎΠΌ для ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ, ΠΌΡ‹ встрСчаСмся с Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ€Π΅ΠΌ. Они говорят Π½Π°ΠΌ, Ρ‡Ρ‚ΠΎ это Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π΅ Π½Π°Ρ‡Π°Π»ΠΎ, Π½ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΎΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°ΡŽΡ‚ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠ½ΠΈΠ³ΠΈ; Ρƒ Π½ΠΈΡ… Ρ‚Π°ΠΊΠΆΠ΅ Π΅ΡΡ‚ΡŒ DVD, ΠΆΡƒΡ€Π½Π°Π»Ρ‹ ΠΈ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚-диски, Π½ΠΈ Ρƒ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅Ρ‚ Π½ΠΎΠΌΠ΅Ρ€Π° ISBN ΠΈΠ»ΠΈ DDS.Однако всС эти Ρ‚ΠΈΠΏΡ‹ элСмСнтов ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎ Π½ΠΎΠΌΠ΅Ρ€Ρƒ UPC. НапоминаСм Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ€ΡŽ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½Π°ΠΉΡ‚ΠΈ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Ρ‹ Π½Π° ΠΏΠΎΠ»ΠΊΠ΅, ΠΈ эти ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Ρ‹, вСроятно, Π½Π΅ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ БКП. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ€ΡŒ ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ‚ΠΈΠΏ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½ ΠΏΠΎ-своСму. ΠšΠΎΠΌΠΏΠ°ΠΊΡ‚-диски — это Π² основном Π°ΡƒΠ΄ΠΈΠΎΠΊΠ½ΠΈΠ³ΠΈ, Π° ΠΈΡ… Π² Π½Π°Π»ΠΈΡ‡ΠΈΠΈ всСго Π΄Π²Π° дСсятка, поэтому ΠΎΠ½ΠΈ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ ΠΏΠΎ Ρ„Π°ΠΌΠΈΠ»ΠΈΠΈ Π°Π²Ρ‚ΠΎΡ€Π°. DVD-диски Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Ρ‹ ΠΏΠΎ ΠΆΠ°Π½Ρ€Π°ΠΌ ΠΈ Π΄Π°Π»Π΅Π΅ упорядочСны ΠΏΠΎ названиям. Π–ΡƒΡ€Π½Π°Π»Ρ‹ сгруппированы ΠΏΠΎ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°ΠΌ, Π° Π·Π°Ρ‚Π΅ΠΌ ΡƒΡ‚ΠΎΡ‡Π½ΡΡŽΡ‚ΡΡ ΠΏΠΎ Ρ‚ΠΎΠΌΠ°ΠΌ ΠΈ Π½ΠΎΠΌΠ΅Ρ€Π°ΠΌ выпусков.Книги, ΠΊΠ°ΠΊ ΠΌΡ‹ ΡƒΠΆΠ΅ догадались, ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ ΠΏΠΎ Π½ΠΎΠΌΠ΅Ρ€Ρƒ DDS.

НС имСя ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ ΠΎΠΏΡ‹Ρ‚Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ проСктирования, ΠΌΡ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ добавлСния ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… списков DVD-дисков, ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚-дисков, ΠΆΡƒΡ€Π½Π°Π»ΠΎΠ² ΠΈ ΠΊΠ½ΠΈΠ³ Π² наш ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ поиск ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΈΠ· Π½ΠΈΡ… ΠΏΠΎ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Ρ… Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² ΠΈ опрСдСлСния физичСского мСстополоТСния элСмСнта, всС эти элСмСнты Π²Π΅Π΄ΡƒΡ‚ сСбя ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ. Π­Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π° ΠΏΠΎ наслСдству! ΠœΡ‹ быстро обновляСм Π½Π°ΡˆΡƒ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡƒ UML ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ€ΡŒ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΡΡƒΡ‚ΡŒ нарисованной Π½Π°ΠΌΠΈ схСмы, Π½ΠΎ Π΅Π³ΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ смущаСт функция locate .ΠœΡ‹ объясняСм, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ использования, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΈΡ‰Π΅Ρ‚ слово bunnies . ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ сначала отправляСт поисковый запрос Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³. ΠšΠ°Ρ‚Π°Π»ΠΎΠ³ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ свой Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ список ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ΠΎΠ² ΠΈ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊΠ½ΠΈΠ³Ρƒ ΠΈ DVD с ΠΊΡ€ΠΎΠ»ΠΈΠΊΠ°ΠΌΠΈ Π² Π½Π°Π·Π²Π°Π½ΠΈΠΈ. На этом этапС ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Ρƒ всС Ρ€Π°Π²Π½ΠΎ, содСрТит Π»ΠΈ ΠΎΠ½ DVD, ΠΊΠ½ΠΈΠ³Ρƒ, ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚-диск ΠΈΠ»ΠΈ ΠΆΡƒΡ€Π½Π°Π»; Ρ‡Ρ‚ΠΎ касаСтся ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°, всС ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹. Однако ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Ρ…ΠΎΡ‡Π΅Ρ‚ Π·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ Π½Π°ΠΉΡ‚ΠΈ физичСскиС ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Ρ‹, поэтому ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠΏΡƒΡ‰Π΅Π½, Ссли ΠΎΠ½ просто Π²Π΅Ρ€Π½Π΅Ρ‚ список Π½Π°Π·Π²Π°Π½ΠΈΠΉ.Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΎΠ½ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ locate для Π΄Π²ΡƒΡ… ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Ρ… элСмСнтов. ΠœΠ΅Ρ‚ΠΎΠ΄ locate ΠΊΠ½ΠΈΠ³ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½ΠΎΠΌΠ΅Ρ€ DDS, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для поиска ΠΏΠΎΠ»ΠΊΠΈ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ находится ΠΊΠ½ΠΈΠ³Π°. DVD опрСдСляСтся ΠΏΡƒΡ‚Π΅ΠΌ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° ΠΆΠ°Π½Ρ€Π° ΠΈ названия DVD. Π—Π°Ρ‚Π΅ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡΠ΅Ρ‚ΠΈΡ‚ΡŒ Ρ€Π°Π·Π΄Π΅Π» DVD, Π½Π°ΠΉΡ‚ΠΈ Ρ€Π°Π·Π΄Π΅Π», содСрТащий этот ΠΆΠ°Π½Ρ€, ΠΈ Π½Π°ΠΉΡ‚ΠΈ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ DVD, отсортированный ΠΏΠΎ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°ΠΌ.

Как ΠΌΡ‹ объясняСм, ΠΌΡ‹ набросаСм схСму ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ UML , ΠΎΠ±ΡŠΡΡΠ½ΡΡŽΡ‰ΡƒΡŽ, ΠΊΠ°ΠΊ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹:

Π’ Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡ‹ классов ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρƒ классами, Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ сообщСний, ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Ρ… ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ.ΠŸΡƒΠ½ΠΊΡ‚ΠΈΡ€Π½Π°Ρ линия, ΡΠ²ΠΈΡΠ°ΡŽΡ‰Π°Ρ с ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, — это линия ΠΆΠΈΠ·Π½ΠΈ , ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰Π°Ρ врСмя ΠΆΠΈΠ·Π½ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Π‘ΠΎΠ»Π΅Π΅ ΡˆΠΈΡ€ΠΎΠΊΠΈΠ΅ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠΈ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π»ΠΈΠ½ΠΈΠΈ ΠΆΠΈΠ·Π½ΠΈ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Π°ΠΊΡ‚ΠΈΠ²Π½ΡƒΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π² этом ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ (Π³Π΄Π΅ Π½Π΅Ρ‚ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² основном сидит Π±Π΅Π· Π΄Π΅Π»Π°, оТидая, Ρ‡Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚). Π“ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ стрСлки ΠΌΠ΅ΠΆΠ΄Ρƒ линиями ΠΆΠΈΠ·Π½ΠΈ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ сообщСния. Π‘ΠΏΠ»ΠΎΡˆΠ½Ρ‹Π΅ стрСлки ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, Π° ΠΏΡƒΠ½ΠΊΡ‚ΠΈΡ€Π½Ρ‹Π΅ стрСлки со ΡΠΏΠ»ΠΎΡˆΠ½Ρ‹ΠΌΠΈ Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°ΠΌΠΈ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ значСния, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ.

Половинки стрСлок ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Π½Π° асинхронныС сообщСния, ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ ΠΈΠ»ΠΈ ΠΎΡ‚ Π½Π΅Π³ΠΎ.АсинхронноС сообщСниС ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ возвращаСтся. ПослС Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Π΅ΠΌΡƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π­Ρ‚ΠΎ отличаСтся ΠΎΡ‚ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ ΠΈ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

Π”ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ, ΠΊΠ°ΠΊ ΠΈ всС Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡ‹ UML, Π»ΡƒΡ‡ΡˆΠ΅ всСго ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹. НСт смысла Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡƒ UML для рисования Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡ‹.Однако, ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ ΠΎ сСрии взаимодСйствий ΠΌΠ΅ΠΆΠ΄Ρƒ двумя ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ, Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ являСтся ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ инструмСнтом.

К соТалСнию, наша Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° классов Π΄ΠΎ сих ΠΏΠΎΡ€ выглядит Π·Π°ΠΏΡƒΡ‚Π°Π½Π½ΠΎΠΉ. ΠœΡ‹ Π·Π°ΠΌΠ΅Ρ‡Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π°ΠΊΡ‚Π΅Ρ€Ρ‹ Π½Π° DVD ΠΈ артисты Π½Π° ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚-дисках — это Ρ€Π°Π·Π½Ρ‹Π΅ люди, Π½ΠΎ ΠΊ Π½ΠΈΠΌ относятся ΠΈΠ½Π°Ρ‡Π΅, Ρ‡Π΅ΠΌ ΠΊ Π°Π²Ρ‚ΠΎΡ€Π°ΠΌ ΠΊΠ½ΠΈΠ³. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ€ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ Π½Π°ΠΌ, Ρ‡Ρ‚ΠΎ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΈΡ… ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚-дисков — это Π°ΡƒΠ΄ΠΈΠΎΠΊΠ½ΠΈΠ³ΠΈ, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΅ΡΡ‚ΡŒ Π°Π²Ρ‚ΠΎΡ€Ρ‹, Π° Π½Π΅ Ρ…ΡƒΠ΄ΠΎΠΆΠ½ΠΈΠΊΠΈ.

Как ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ людьми, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ вносят свой Π²ΠΊΠ»Π°Π΄ Π² созданиС названия? Одна очСвидная рСализация — ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ класс Person с ΠΈΠΌΠ΅Π½Π΅ΠΌ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ° ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ дСталями, Π° Π·Π°Ρ‚Π΅ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π΅Π³ΠΎ подклассы для Ρ…ΡƒΠ΄ΠΎΠΆΠ½ΠΈΠΊΠΎΠ², Π°Π²Ρ‚ΠΎΡ€ΠΎΠ² ΠΈ Π°ΠΊΡ‚Π΅Ρ€ΠΎΠ².Однако Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π»ΠΈ здСсь Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ наслСдованиС? Π’ цСлях поиска ΠΈ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π°ΠΌ всС Ρ€Π°Π²Π½ΠΎ, Ρ‡Ρ‚ΠΎ актСрскоС мастСрство ΠΈ ΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ — это Π΄Π²Π° ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Ρ€Π°Π·Π½Ρ‹Ρ… Π²ΠΈΠ΄Π° Π΄Π΅ΡΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Если Π±Ρ‹ ΠΌΡ‹ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΠ»ΠΈ экономичСскоС ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, Π±Ρ‹Π»ΠΎ Π±Ρ‹ Ρ€Π°Π·ΡƒΠΌΠ½ΠΎ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ классы Π°ΠΊΡ‚Π΅Ρ€ΠΎΠ² ΠΈ Π°Π²Ρ‚ΠΎΡ€ΠΎΠ² ΠΈ Ρ€Π°Π·Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ calculate_income ΠΈ perform_job , Π½ΠΎ для Ρ†Π΅Π»Π΅ΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈΠ·Π°Ρ†ΠΈΠΈ достаточно Π·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠΉ Π²ΠΊΠ»Π°Π΄ внСс Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ Π² элСмСнт. ΠŸΠΎΡ€Π°Π·ΠΌΡ‹ΡΠ»ΠΈΠ² Π½Π°Π΄ этим, ΠΌΡ‹ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ всС элСмСнты ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ нСсколько ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Contributor , поэтому ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π΅ΠΌ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ Π°Π²Ρ‚ΠΎΡ€Π° ΠΈΠ· ΠΊΠ½ΠΈΠ³ΠΈ Π² Π΅Π΅ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ класс:

ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²Π΅Π½Π½ΠΎΡΡ‚ΡŒ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ Contributor / LibraryItem составляСт ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΊΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠΌ , Π½Π° Ρ‡Ρ‚ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ символ * Π½Π° ΠΎΠ±ΠΎΠΈΡ… ΠΊΠΎΠ½Ρ†Π°Ρ… ΠΎΠ΄Π½ΠΎΠΉ связи.Π›ΡŽΠ±ΠΎΠΉ элСмСнт Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ участника (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, нСсколько Π°ΠΊΡ‚Π΅Ρ€ΠΎΠ² ΠΈ рСТиссСр Π½Π° DVD). МногиС Π°Π²Ρ‚ΠΎΡ€Ρ‹ ΠΏΠΈΡˆΡƒΡ‚ ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠ½ΠΈΠ³, поэтому ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΊΡ€Π΅ΠΏΠΈΡ‚ΡŒ ΠΊ нСскольким ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ.

Π­Ρ‚ΠΎ нСбольшоС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅, хотя ΠΈ выглядит Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Ρ‡ΠΈΡ‰Π΅ ΠΈ ΠΏΡ€ΠΎΡ‰Π΅, Π½ΠΎ лишСно Π²Π°ΠΆΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. ΠœΡ‹ всС Π΅Ρ‰Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΊΡ‚ΠΎ внСс свой Π²ΠΊΠ»Π°Π΄ Π² ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ элСмСнт Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Π½ΠΎ ΠΌΡ‹ Π½Π΅ Π·Π½Π°Π΅ΠΌ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ внСсли свой Π²ΠΊΠ»Π°Π΄. Они Π±Ρ‹Π»ΠΈ рСТиссСром ΠΈΠ»ΠΈ Π°ΠΊΡ‚Π΅Ρ€ΠΎΠΌ? Они написали Π°ΡƒΠ΄ΠΈΠΎΠΊΠ½ΠΈΠ³Ρƒ ΠΈΠ»ΠΈ ΠΎΠ½ΠΈ Π±Ρ‹Π»ΠΈ голосом, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ рассказывал ΠΊΠ½ΠΈΠ³Ρƒ?

Π‘Ρ‹Π»ΠΎ Π±Ρ‹ Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎ, Ссли Π±Ρ‹ ΠΌΡ‹ ΠΌΠΎΠ³Π»ΠΈ просто Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ Contributor_type Π² класс Contributor , Π½ΠΎ это развалится, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ ΠΈΠΌΠ΅Π΅ΠΌ Π΄Π΅Π»ΠΎ с людьми с разносторонними Ρ‚Π°Π»Π°Π½Ρ‚Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π°Π²Ρ‚ΠΎΡ€Π°ΠΌΠΈ ΠΊΠ½ΠΈΠ³ ΠΈ рСТиссСрами Ρ„ΠΈΠ»ΡŒΠΌΠΎΠ².

Один ΠΈΠ· Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² — Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΈΠ· Π½Π°ΡˆΠΈΡ… подклассов LibraryItem для хранСния Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠΉ Π½Π°ΠΌ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Author Π² Book ΠΈΠ»ΠΈ Artist Π½Π° CD , Π° Π·Π°Ρ‚Π΅ΠΌ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ связь со всСми этими свойствами ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ Π½Π° класс Contributor . ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ тСряСм ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„Π½ΠΎΠΉ элСгантности. Если ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ участников элСмСнта, ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΊΠ°Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ этого элСмСнта, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Authors ΠΈΠ»ΠΈ Actors .ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, Π΄ΠΎΠ±Π°Π²ΠΈΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄ GetContributors Π² класс LibraryItem , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ подклассы ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ. Π’ΠΎΠ³Π΄Π° ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Ρƒ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°ΡŽΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹; ΠΌΡ‹ абстрагировали ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ интСрфСйс:

ΠŸΡ€ΠΎΡΡ‚ΠΎ глядя Π½Π° эту Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡƒ классов, каТСтся, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π΄Π΅Π»Π°Π΅ΠΌ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π½Π΅ Ρ‚Π°ΠΊ. Он Π³Ρ€ΠΎΠΌΠΎΠ·Π΄ΠΊΠΈΠΉ ΠΈ Ρ…Ρ€ΡƒΠΏΠΊΠΈΠΉ. Он ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ всС, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ, Π½ΠΎ каТСтся, Ρ‡Ρ‚ΠΎ Π΅Π³ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ слоТно ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ Ρ€Π°ΡΡˆΠΈΡ€ΡΡ‚ΡŒ. Блишком ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΉ, ΠΈ слишком ΠΌΠ½ΠΎΠ³ΠΎ классов Π±ΡƒΠ΄ΡƒΡ‚ Π·Π°Ρ‚Ρ€ΠΎΠ½ΡƒΡ‚Ρ‹ модификациями любого ΠΎΠ΄Π½ΠΎΠ³ΠΎ класса.ΠŸΠΎΡ…ΠΎΠΆΠ΅ Π½Π° спагСтти ΠΈ Ρ‚Π΅Ρ„Ρ‚Π΅Π»ΠΈ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ ΠΈΠ·ΡƒΡ‡ΠΈΠ»ΠΈ наслСдованиС ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΈ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΎ ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΊ нашСй ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ΅ Π½Π° основС ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ, Π³Π΄Π΅ Contributor Π±Ρ‹Π» присоСдинСн нСпосрСдствСнно ΠΊ LibraryItem . ΠŸΠΎΡ€Π°Π·ΠΌΡ‹ΡΠ»ΠΈΠ², ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½Π° самом Π΄Π΅Π»Π΅ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ ΠΊ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½ΠΎΠ²ΠΎΠΌΡƒ классу, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ‚ΠΈΠΏ участника. Π­Ρ‚ΠΎ Π²Π°ΠΆΠ½Ρ‹ΠΉ шаг Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ Π΄ΠΈΠ·Π°ΠΉΠ½Π΅. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ добавляСм Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ класс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Π° Π½Π΅ для модСлирования ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ части Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Ρ… Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ.ΠœΡ‹ Ρ€Π΅ΠΎΡ€Π³Π°Π½ΠΈΠ·ΡƒΠ΅ΠΌ Π΄ΠΈΠ·Π°ΠΉΠ½, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π² систСмС, Π° Π½Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ ΠΆΠΈΠ·Π½ΠΈ. Π Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³ — Π²Π°ΠΆΠ½Ρ‹ΠΉ процСсс ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠ»ΠΈ Π΄ΠΈΠ·Π°ΠΉΠ½Π°. ЦСлью Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³Π° являСтся ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠ΅ Π΄ΠΈΠ·Π°ΠΉΠ½Π° ΠΏΡƒΡ‚Π΅ΠΌ пСрСмСщСния ΠΊΠΎΠ΄Π°, удалСния Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΈΠ»ΠΈ слоТных взаимосвязСй Π² ΠΏΠΎΠ»ΡŒΠ·Ρƒ Π±ΠΎΠ»Π΅Π΅ простых ΠΈ элСгантных Π΄ΠΈΠ·Π°ΠΉΠ½ΠΎΠ².

Π­Ρ‚ΠΎΡ‚ Π½ΠΎΠ²Ρ‹ΠΉ класс состоит ΠΈΠ· Contributor ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰Π΅Π³ΠΎ Ρ‚ΠΈΠΏ Π²ΠΊΠ»Π°Π΄Π° Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ° Π² Π΄Π°Π½Π½Ρ‹ΠΉ LibraryItem .Π’Π°ΠΊΠΈΡ… Π²ΠΊΠ»Π°Π΄ΠΎΠ² Π² ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ LibraryItem ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ, ΠΈ ΠΎΠ΄ΠΈΠ½ участник ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ Π²Π½ΠΎΡΠΈΡ‚ΡŒ Π²ΠΊΠ»Π°Π΄ Π² Ρ€Π°Π·Π½Ρ‹Π΅ элСмСнты. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ эту ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ:

Π‘Π½Π°Ρ‡Π°Π»Π° это ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ выглядит ΠΌΠ΅Π½Π΅Π΅ СстСствСнным, Ρ‡Π΅ΠΌ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ Π½Π° основС наслСдования. Однако Ρƒ Π½Π΅Π³ΠΎ Π΅ΡΡ‚ΡŒ Ρ‚ΠΎ прСимущСство, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π²ΠΊΠ»Π°Π΄ΠΎΠ² Π±Π΅Π· добавлСния Π½ΠΎΠ²ΠΎΠ³ΠΎ класса Π² Π΄ΠΈΠ·Π°ΠΉΠ½. НаслСдованиС Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, ΠΊΠΎΠ³Π΄Π° подклассы ΠΈΠΌΠ΅ΡŽΡ‚ ΠΊΠ°ΠΊΡƒΡŽ-Ρ‚ΠΎ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ .БпСциализация — это созданиС ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² ΠΈΠ»ΠΈ повСдСния подкласса, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ Ρ‡Π΅ΠΌ-Ρ‚ΠΎ отличался ΠΎΡ‚ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса. ΠšΠ°ΠΆΠ΅Ρ‚ΡΡ Π³Π»ΡƒΠΏΡ‹ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΊΡƒΡ‡Ρƒ пустых классов ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ для ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² (Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ ΠΌΠ΅Π½Π΅Π΅ распространСно срСди Java ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… программистов, всС являСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ , Π½ΠΎ это распространСно срСди Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€Π°Π³ΠΌΠ°Ρ‚ΠΈΡ‡Π½Ρ‹Ρ… Π΄ΠΈΠ·Π°ΠΉΠ½Π΅Ρ€ΠΎΠ² Python). Если ΠΌΡ‹ посмотрим Π½Π° Π²Π΅Ρ€ΡΠΈΡŽ наслСдования Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡ‹, ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ Π³Ρ€ΡƒΠΏΠΏΡƒ подклассов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π° самом Π΄Π΅Π»Π΅ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°ΡŽΡ‚:

Иногда Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° Π½Π΅ слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹.Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠΎΠ³Π΄Π° Π½Π΅ слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ наслСдованиС, являСтся Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ΠΌ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ — это просто инструмСнты, Π° Π½Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π°.

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

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

Python — это язык программирования с нСсколькими ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠ°ΠΌΠΈ. Он ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ€Π°Π·Π½Ρ‹Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹ ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ.

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

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

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

ΠŸΠΎΠΏΡƒΠ³Π°ΠΉ — это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ свойствами:

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

ΠšΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡ ООП Π² Python Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π° ​​на созданиС ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.Π­Ρ‚Π° концСпция Ρ‚Π°ΠΊΠΆΠ΅ извСстна ΠΊΠ°ΠΊ Π‘Π£Π₯ΠžΠ™ (НС повторяйся).

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


Класс

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

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

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ для класса попугая ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ:

класс ΠŸΠΎΠΏΡƒΠ³Π°ΠΉ:
    ΠΏΡ€ΠΎΠΉΡ‚ΠΈ 

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


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

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

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

obj = ΠŸΠΎΠΏΡƒΠ³Π°ΠΉ () 

Π—Π΄Π΅ΡΡŒ obj — это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса Parrot .

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

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

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

    # Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ класса
    разновидности = "ΠΏΡ‚ΠΈΡ†Π°"

    # Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ экзСмпляра
    def __init __ (я, имя, возраст):
        self.name = имя
        self.age = возраст

# ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ экзСмпляр класса Parrot
blu = ΠŸΠΎΠΏΡƒΠ³Π°ΠΉ ("Π“ΠΎΠ»ΡƒΠ±ΠΎΠΉ", 10)
woo = ΠŸΠΎΠΏΡƒΠ³Π°ΠΉ ("Π’Ρƒ", 15)

# доступ ΠΊ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌ класса
print ("Blu is a {}". format (blu .__ class __. разновидности))
print ("Π’Ρƒ Ρ‚ΠΎΠΆΠ΅ {}".Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ (Π²Ρƒ .__ класс __. Π²ΠΈΠ΄Ρ‹))

# доступ ΠΊ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌ экзСмпляра
print ("{} исполнилось {} Π»Π΅Ρ‚" .format (blu.name, blu.age))
print ("{} {} Π»Π΅Ρ‚" .format (woo.name, woo.age))  

Π’Ρ‹Ρ…ΠΎΠ΄

  Blu - ΠΏΡ‚ΠΈΡ†Π°
Π’Ρƒ Ρ‚ΠΎΠΆΠ΅ ΠΏΡ‚ΠΈΡ†Π°
Π‘Π»ΡŽ 10 Π»Π΅Ρ‚
Π’Ρƒ 15 Π»Π΅Ρ‚  

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

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

Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ создаСм экзСмпляры класса Parrot . Π—Π΄Π΅ΡΡŒ blu ΠΈ woo — это ссылки (значСния) Π½Π° наши Π½ΠΎΠ²Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹.

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

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС ΠΎ классах ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°Ρ…, ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² Ρ€Π°Π·Π΄Π΅Π» ΠšΠ»Π°ΡΡΡ‹ ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Python


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

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

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

  класс ΠŸΠΎΠΏΡƒΠ³Π°ΠΉ:
    
    # Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² экзСмпляра
    def __init __ (я, имя, возраст):
        self.name = имя
        self.age = возраст
    
    # ΠΌΠ΅Ρ‚ΠΎΠ΄ экзСмпляра
    def Sing (я, пСсня):
        Π²Π΅Ρ€Π½ΠΈΡ‚Π΅ "{} sings {}".Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ (собствСнноС имя, пСсня)

    def dance (сам):
        return "{} Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρ‚Π°Π½Ρ†ΡƒΠ΅Ρ‚" .format (self.name)

# ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ экзСмпляр ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°
blu = ΠŸΠΎΠΏΡƒΠ³Π°ΠΉ ("Π“ΠΎΠ»ΡƒΠ±ΠΎΠΉ", 10)

# Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ наши ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ экзСмпляра
print (blu.sing ("Бчастливый"))
ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ (blu.dance ())  

Π’Ρ‹Ρ…ΠΎΠ΄

  Blu ΠΏΠΎΠ΅Ρ‚ 'Happy'
Blu сСйчас Ρ‚Π°Π½Ρ†ΡƒΠ΅Ρ‚  

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


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

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

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

  # Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ класс
класс Bird:
    
    def __init __ (сам):
        print (Β«ΠŸΡ‚ΠΈΡ†Π° Π³ΠΎΡ‚ΠΎΠ²Π°Β»)

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

    def ΠΏΠ»Π°Π²Π°Ρ‚ΡŒ (сам):
        print (Β«ΠŸΠ»Ρ‹Π²ΠΈ быстрСС»)

# Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ класс
класс Пингвин (ΠŸΡ‚ΠΈΡ†Π°):

    def __init __ (сам):
        # Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ super ()
        супСр().__Π² этом__()
        print («Пингвин Π³ΠΎΡ‚ΠΎΠ²Β»)

    def whoisThis (я):
        print («Пингвин»)

    def run (self):
        print (Β«Π‘Π΅Π³ΠΈ быстрСС»)

пСгги = Пингвин ()
peggy.whoisThis ()
peggy.swim ()
peggy.run ()  

Π’Ρ‹Ρ…ΠΎΠ΄

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

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

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

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


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

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

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

  класс ΠšΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€:

    def __init __ (сам):
        self .__ maxprice = 900

    def sell (self):
        print ("Π¦Π΅Π½Π° ΠΏΡ€ΠΎΠ΄Π°ΠΆΠΈ: {}".Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ (self .__ maxprice))

    def setMaxPrice (self, price):
        self .__ maxprice = Ρ†Π΅Π½Π°

c = ΠšΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ ()
c.sell ()

# ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ†Π΅Π½Ρƒ
c .__ maxprice = 1000
c.sell ()

# использованиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ установки
c.setMaxPrice (1000)
c.sell ()  

Π’Ρ‹Ρ…ΠΎΠ΄

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

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

ΠœΡ‹ использовали ΠΌΠ΅Ρ‚ΠΎΠ΄ __init __ () для хранСния максимальной ΠΏΡ€ΠΎΠ΄Π°ΠΆΠ½ΠΎΠΉ Ρ†Π΅Π½Ρ‹ Computer .ΠœΡ‹ ΠΏΡ‹Ρ‚Π°Π»ΠΈΡΡŒ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ†Π΅Π½Ρƒ. Однако ΠΌΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π΅Π³ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Python ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ __maxprice ΠΊΠ°ΠΊ частныС Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹.

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


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

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

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

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

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

    def fly (self):
        print (Β«ΠŸΠΎΠΏΡƒΠ³Π°ΠΉ ΡƒΠΌΠ΅Π΅Ρ‚ Π»Π΅Ρ‚Π°Ρ‚ΡŒΒ»)
    
    def ΠΏΠ»Π°Π²Π°Ρ‚ΡŒ (сам):
        print (Β«ΠŸΠΎΠΏΡƒΠ³Π°ΠΉ Π½Π΅ ΡƒΠΌΠ΅Π΅Ρ‚ ΠΏΠ»Π°Π²Π°Ρ‚ΡŒΒ»)

класс Пингвин:

    def fly (self):
        print («Пингвин Π½Π΅ ΡƒΠΌΠ΅Π΅Ρ‚ Π»Π΅Ρ‚Π°Ρ‚ΡŒΒ»)
    
    def ΠΏΠ»Π°Π²Π°Ρ‚ΡŒ (сам):
        print («Пингвин ΡƒΠΌΠ΅Π΅Ρ‚ ΠΏΠ»Π°Π²Π°Ρ‚ΡŒΒ»)

# ΠžΠ±Ρ‰ΠΈΠΉ интСрфСйс
def flying_test (ΠΏΡ‚ΠΈΡ†Π°):
    bird.fly ()

#instantiate objects
blu = ΠŸΠΎΠΏΡƒΠ³Π°ΠΉ ()
пСгги = Пингвин ()

# ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°
Π»Π΅Ρ‚Π°ΡŽΡ‰ΠΈΠΉ_тСст (blu)
fly_test (ΠΏΠ΅Π³Π³ΠΈ)  

Π’Ρ‹Ρ…ΠΎΠ΄

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

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

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


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

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

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Python | Набор 1 (класс, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈ Ρ‡Π»Π΅Π½Ρ‹)

НиТС прСдставлСна ​​простая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Python, которая создаСт класс с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°.

Python

класс ВСст:

def вСсСло ( self ):

ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ ( "ΠŸΡ€ΠΈΠ²Π΅Ρ‚" )

obj = Test ()

obj.fun ()

Π’Ρ‹Π²ΠΎΠ΄:

 Hello 

Как ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ Π²Ρ‹ΡˆΠ΅, ΠΌΡ‹ создаСм Π½ΠΎΠ²Ρ‹ΠΉ класс, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ class ΠΈ имя класса. Π—Π° Π½ΠΈΠΌ слСдуСт Π±Π»ΠΎΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² с отступом, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Ρ‚Π΅Π»ΠΎ класса. Π’ этом случаС ΠΌΡ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈ СдинствСнный ΠΌΠ΅Ρ‚ΠΎΠ΄ Π² классС.
Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ создаСм ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ / экзСмпляр этого класса, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ имя класса, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ слСдуСт ΠΏΠ°Ρ€Π° ΠΊΡ€ΡƒΠ³Π»Ρ‹Ρ… скобок.

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

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


Класс:

Класс — это ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ опрСдСляСт ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ (характСристики), ΠΎΠ±Ρ‰ΠΈΠ΅ для всСх ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€: Если ΠΠ²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ являСтся классом, Ρ‚ΠΎ Audi A6 являСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ класса ΠΠ²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ. ВсС Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ схоТиС Ρ‡Π΅Ρ€Ρ‚Ρ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ 4 колСса, 1 Ρ€ΡƒΠ»ΡŒ, ΠΎΠΊΠ½Π°, Ρ‚ΠΎΡ€ΠΌΠΎΠ·Π½Ρ‹Π΅ диски ΠΈ Ρ‚. Π”. Audi A6 (ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Β«ΠΠ²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒΒ») ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ всСми этими характСристиками.

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса self

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

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

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

Python

класс ЧСловСк:

def __init __ ( self , имя): 8

900 .name = имя

def say_hi ( self ):

print ( 'ΠŸΡ€ΠΈΠ²Π΅Ρ‚, ΠΌΠΎΠ΅ имя это , self .имя)

p = Π§Π΅Π»ΠΎΠ²Π΅ΠΊ ( 'Shwetanshu' )

p.say_hi ()

Π’Ρ‹Π²ΠΎΠ΄:

 ΠŸΡ€ΠΈΠ²Π΅Ρ‚, мСня Π·ΠΎΠ²ΡƒΡ‚ ШвСтанс. 

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ опрСдСляСм ΠΌΠ΅Ρ‚ΠΎΠ΄ __init__ ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΠΉ имя ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° (вмСстС с ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ self). .

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ класса ΠΈ экзСмпляра (ΠΈΠ»ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹)
Π’ Python ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ экзСмпляра — это ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… присваиваСтся Π²Π½ΡƒΡ‚Ρ€ΠΈ конструктора ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ self.
ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ класса — это ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… присваиваСтся Π² классС.

Python

класс CSS студСнт:

ΠΏΠΎΡ‚ΠΎΠΊ = 'cse' 9 9002 967

0

def __init __ ( self , roll):

self .Ρ€ΡƒΠ»ΠΎΠ½ = Ρ€ΡƒΠ»ΠΎΠ½

a = CSStudent ( 101 )

b = CSStudent (

102

0)

8

print (a.stream)

print (b.stream)

print (a.roll)

print (CSStudent .stream)

ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ экзСмпляра Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ².

Python

класс CSStudent:

ΠΏΠΎΡ‚ΠΎΠΊ

02

0

9000 9000 9000 9000

def __init __ ( self , roll):

self .roll = roll

def setAddress ( self , адрСс):

self .address address = .

def getAddress ( self ):

return self .адрСс

a = CSStudent ( 101 )

a.setAddress ( "Noida, UP" )

print (a.getAddress ())

Π’Ρ‹Π²ΠΎΠ΄:

 Noida, UP 


Как ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ пустой класс?
ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ пустой класс, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ pass Π² Python.

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Python | Набор 2 (Π‘ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²)

-xa0
Автор ΡΡ‚Π°Ρ‚ΡŒΠΈ Shwetanshu Rohatgi .ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, Π½Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ, Ссли Π²Ρ‹ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚Π΅ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅, ΠΈΠ»ΠΈ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅, обсуТдСнной Π²Ρ‹ΡˆΠ΅

Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρ‰ΠΈΠΊ! Π£ΠΊΡ€Π΅ΠΏΠΈΡ‚Π΅ свои основы с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ курса Python Programming Foundation ΠΈ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚Π΅ основы.

Для Π½Π°Ρ‡Π°Π»Π° ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΡŒΡ‚Π΅ΡΡŒ ΠΊ собСсСдованию. Π Π°ΡΡˆΠΈΡ€ΡŒΡ‚Π΅ свои ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ структур Π΄Π°Π½Π½Ρ‹Ρ… с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ курса Python DS . И Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°Ρ‡Π°Ρ‚ΡŒ своС ΠΏΡƒΡ‚Π΅ΡˆΠ΅ΡΡ‚Π²ΠΈΠ΅ ΠΏΠΎ ΠΌΠ°ΡˆΠΈΠ½Π½ΠΎΠΌΡƒ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΡŽ, ΠΏΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΠΉΡ‚Π΅ΡΡŒ ΠΊ МашинноС ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ - Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ курс


ООП Π½Π° Python | Набор 3 (наслСдованиС, ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, issubclass ΠΈ super)

ΠœΡ‹ обсудили ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ‚Π΅ΠΌΡ‹ ΠΏΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ Π² Python

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ рассматриваСтся наслСдованиС.

Одно ΠΈΠ· Π³Π»Π°Π²Π½Ρ‹Ρ… прСимущСств ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования - ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΠ΅ использованиС. НаслСдованиС - ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² достиТСния Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅. ΠŸΡ€ΠΈ наслСдовании класс (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ супСрклассом) наслСдуСтся Π΄Ρ€ΡƒΠ³ΠΈΠΌ классом (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΌ подклассом). Подкласс добавляСт ΠΊ супСрклассу Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹.

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΎΠ±Ρ€Π°Π·Π΅Ρ† ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Python, Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ, ΠΊΠ°ΠΊ Π² Python Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ наслСдованиС.

класс Π›ΠΈΡ†ΠΎ ( ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ):

__ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ , имя):

сам .имя = имя

def getName ( self ):

return self .name 9002

def isEmployee ( self ):

return False

Employee

0 класс ЧСловСк):

def isEmployee ( self ):

Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ True

9000 emp = 900 68 Π§Π΅Π»ΠΎΠ²Π΅ΠΊ ( "Geek1" )

ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ (ΠΆΠΈΡ€Π½Ρ‹ΠΉ ΡˆΡ€ΠΈΡ„Ρ‚)getName (), emp.isEmployee ())

emp = Π‘ΠΎΡ‚Ρ€ΡƒΠ΄Π½ΠΈΠΊ ( "Geek2" )

print (emp.getName (), emp. isEmployee ())

Π’Ρ‹Π²ΠΎΠ΄:
('Geek1', лоТь)
('Geek2', ΠΏΡ€Π°Π²Π΄Π°)
 

Как ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, являСтся Π»ΠΈ класс подклассом Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ?
Python прСдоставляСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ issubclass (), которая Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ сообщаСт Π½Π°ΠΌ, являСтся Π»ΠΈ класс подклассом Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ класса.

класс Π‘Π°Π·Π° ( ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ):

ΠΏΡ€ΠΎΡ…ΠΎΠ΄

класс ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΉ 9677 967 967 9: ΠΏΡ€ΠΎΠΉΡ‚ΠΈ

ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ ( isubclass (ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΉ, Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ))

ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ ( issubclass (Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΉ))

d = ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠ΅ ()

b = Π‘Π°Π·Π° ()

ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ ( isinstance (b, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠ΅)) 9000

ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ ( isinstance (d, Base)) 9 0007

Π’Ρ‹Ρ…ΠΎΠ΄:
Π˜ΡΡ‚ΠΈΠ½Π½Ρ‹ΠΉ
Π›ΠΎΠΆΡŒ
Π›ΠΎΠΆΡŒ
Π˜ΡΡ‚ΠΈΠ½Π½Ρ‹ΠΉ
 

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ класс ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°?
Как класс Java Object Π² Python (начиная с вСрсии 3.x) ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ являСтся ΠΊΠΎΡ€Π½Π΅ΠΌ всСх классов.

Π’ Python 3.x Β«class Test (ΠΎΠ±ΡŠΠ΅ΠΊΡ‚)Β» ΠΈ Β«class TestΒ» ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹.
Π’ Python 2.x Β«class Test (object)Β» создаСт класс с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ Π² качСствС Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ (Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ классом Π½ΠΎΠ²ΠΎΠ³ΠΎ стиля), Π° Β«class TestΒ» создаСт класс старого стиля (Π±Π΅Π· Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°). ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ΡΡŒ ΠΊ этому для Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π»ΠΈ Python мноТСствСнноС наслСдованиС?
Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Java ΠΈ, ΠΊΠ°ΠΊ ΠΈ C ++, Python ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ мноТСствСнноС наслСдованиС. ΠœΡ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ всС Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ классы Π² Π²ΠΈΠ΄Π΅ списка, Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ запятыми, Π² скобках.



класс Base1 ( ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ):

def __init __ ( self ):

selfst = Β«Geek1Β»

ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ Β«Base1Β»

класс Base2 ( ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ):

9000__ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ __ ( собствСнноС ):

собствСнноС .str2 = "Geek2"

ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ "Base2"

класс ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΉ (Base1, Base2):

9000__2 defit __ self ):

Base1 .__ init __ ( self )

Base2.__init __ ( self )

print Β«ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΉΒ»

def printStrs ( self ):

print

( self .str1, self .str2)

ob = ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΎ ()

ob.printStrs ()

Π’Ρ‹Π²ΠΎΠ΄:
Base1
Base2
ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ
("ΠšΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρ‰ΠΈΠΊ1", "ΠšΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρ‰ΠΈΠΊ2")
 

Как ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ элСмСнтам Π² подклассС?

  1. ИспользованиС ΠΈΠΌΠ΅Π½ΠΈ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса

    класс Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ ( ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ):

    defit , x):

    собствСнноС .x = x

    класс ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠ΅ (Π±Π°Π·ΠΎΠ²ΠΎΠ΅):

    def __init __ ( , x y):

    Base.x = x

    self .y = y

    def printXY ( self ):

    ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ (Base.x, self .y)

    d = ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΎ ( 10 , 20 )

    d.printXY ( )

  2. ИспользованиС super ()
    ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Ρ‡Π»Π΅Π½Π°ΠΌ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ super.

    класс Π‘Π°Π·Π° ( ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ):

    def __init __ (

    0

    , x) 9: 9000 собствСнноС .x = x

    класс ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠ΅ (Π±Π°Π·ΠΎΠ²ΠΎΠ΅):

    def __init __ ( , x y):

    super (ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΎ, self ).__init __ (x)

    self .y = y

    def printXY ( self ):

    0

    ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ ( собствСнноС .x, собствСнноС .y)

    d d d d ( 10 , 20 )

    Π³.printXY ()

    ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π΄Π²Π° Π²Ρ‹ΡˆΠ΅ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π½Π΅ совсСм Ρ‚ΠΎ ΠΆΠ΅ самоС. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΎ наслСдовании ΠΌΡ‹ рассмотрим ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ‚Π΅ΠΌΡ‹.
    1) Как супСр Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚? Π§Π΅ΠΌ отличаСтся доступ ΠΊ Ρ‡Π»Π΅Π½Ρƒ Ρ‡Π΅Ρ€Π΅Π· имя Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ ΠΈ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ классов?
    2) Как ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с Π°Π»ΠΌΠ°Π·ΠΎΠΌ Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ Π² Python?

    Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅:
    ΠŸΡ€Π΅Π΄ΡΠΊΠ°ΠΆΠΈΡ‚Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Python

    1. 17

      класс X ( ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ):

      ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ __init __ ( self , a):

      self .число = a

      def ΡƒΠ΄Π²ΠΎΠ΅Π½ΠΈΠ΅ ( self ):

      self . число * = 2

      класс Y (X):

      def __init __ ( self , a):

      X.__init __ ( self , a)

      def tripleup ( self ):

      self .num * = 3

      obj = Y ( 4 )

      ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ (obj.num)

      obj.doubleup ()

      print (obj.num)

      obj.tripleup ()

      print (obj.num)

    2. класс Π§Π΅Π»ΠΎΠ²Π΅ΠΊ ( ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ):

      def __init __ ( self , name):

      self .имя = имя

      def getName ( self ):

      return self .name

      8

      def isEmployee ( self ):

      return False

      class Π‘ΠΎΡ‚Ρ€ΡƒΠ΄Π½ΠΈΠΊ (Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ):

      def __init __ ( self , имя, eid):

      super (сотрудник, self ).__init __ (имя)

      self .empID = eid

      def isEmployee ( self ): Π²ΠΎΠ·Π²Ρ€Π°Ρ‚

      True

      def getID ( self ):

      return self .empID

      emp = Π‘ΠΎΡ‚Ρ€ΡƒΠ΄Π½ΠΈΠΊ ( "Geek1" , "E101" )

      ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ (emp.getName (), emp.isEmployee (), emp.getID ())

      Π’Ρ‹Π²ΠΎΠ΄:
      ('Geek1', ΠΏΡ€Π°Π²Π΄Π°, 'E101')
       

    Авторы этой ΡΡ‚Π°Ρ‚ΡŒΠΈ: Shwetanshu Rohatgi ΠΈ Mayank Rawat .Если Π²Π°ΠΌ нравится GeeksforGeeks, ΠΈ Π²Ρ‹ Ρ…ΠΎΡ‚Π΅Π»ΠΈ Π±Ρ‹ внСсти свой Π²ΠΊΠ»Π°Π΄, Π²Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΡΡ‚Π°Ρ‚ΡŒΡŽ ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π΅Π΅ ΠΏΠΎ элСктронной ΠΏΠΎΡ‡Ρ‚Π΅ Π½Π° [email protected]. ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅, ΠΊΠ°ΠΊ ваша ΡΡ‚Π°Ρ‚ΡŒΡ появляСтся Π½Π° Π³Π»Π°Π²Π½ΠΎΠΉ страницС GeeksforGeeks, ΠΈ ΠΏΠΎΠΌΠΎΠ³ΠΈΡ‚Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠΌ Π³ΠΈΠΊΠ°ΠΌ.

    ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, Π½Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ, Ссли Π²Ρ‹ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚Π΅ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅, ΠΈΠ»ΠΈ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅, обсуТдСнной Π²Ρ‹ΡˆΠ΅

    Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρ‰ΠΈΠΊ! Π£ΠΊΡ€Π΅ΠΏΠΈΡ‚Π΅ свои основы с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ курса Python Programming Foundation ΠΈ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚Π΅ основы.

    Для Π½Π°Ρ‡Π°Π»Π° ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΡŒΡ‚Π΅ΡΡŒ ΠΊ собСсСдованию. Π Π°ΡΡˆΠΈΡ€ΡŒΡ‚Π΅ свои ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ структур Π΄Π°Π½Π½Ρ‹Ρ… с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ курса Python DS .И Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°Ρ‡Π°Ρ‚ΡŒ своС ΠΏΡƒΡ‚Π΅ΡˆΠ΅ΡΡ‚Π²ΠΈΠ΅ ΠΏΠΎ ΠΌΠ°ΡˆΠΈΠ½Π½ΠΎΠΌΡƒ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΡŽ, ΠΏΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΠΉΡ‚Π΅ΡΡŒ ΠΊ МашинноС ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ - курс Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ уровня


ΠŸΠΎΠ½ΡΡ‚ΡŒ O.O.P. Π² Python с ΠΎΠ΄Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ΠΉ | Π”ΠΆΡƒΠ»ΠΈΠ°Π½ Π­Ρ€Ρ€Π΅Ρ€Π°

Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΈΠ½Ρ‚ΡƒΠΈΡ†ΠΈΡŽ, Π»Π΅ΠΆΠ°Ρ‰ΡƒΡŽ Π² основС этой Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ программирования, Π΄Π°Π²Π°ΠΉΡ‚Π΅ взглянСм Π½Π° Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΌΠ°ΡˆΠΈΠ½Ρƒ ΠΊΠΎΠΌΡƒ-Ρ‚ΠΎ, ΠΊΡ‚ΠΎ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π΅Π΅ Ρ€Π°Π½ΡŒΡˆΠ΅ Π½Π΅ Π²ΠΈΠ΄Π΅Π». Как Π±Ρ‹ Π²Ρ‹ это сдСлали?

Π€ΠΎΡ‚ΠΎ vaea Garrido Π½Π° Unsplash

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°Ρ‡Π°Ρ‚ΡŒ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ это колСсный Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ для ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ·ΠΊΠΈ.ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ сущСствуСт нСсколько Π±Ρ€Π΅Π½Π΄ΠΎΠ² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ-ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ производят Ρ€Π°Π·Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»Π΅ΠΉ, ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‰ΠΈΠ΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌ потрСбностям. На Π±ΠΎΠ»Π΅Π΅ простом ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρƒ Π½Π΅Π³ΠΎ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ ΡˆΠΈΠ½Ρ‹, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв Π²ΠΌΠ΅Ρ‰Π°ΡŽΡ‚ Π΄ΠΎ пяти Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ ΠΈ Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π² основном ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ·ΠΊΠΈ людСй, Π° Π½Π΅ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ².

Объясняя ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρƒ, Ρ‡Ρ‚ΠΎ это Π·Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎ ΠΏΠΎΠ΄ΠΎΠΉΡ‚ΠΈ ΠΊ Π½Π΅ΠΌΡƒ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. ΠšΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρ‹ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ Π²Ρ€ΠΎΠΆΠ΄Π΅Π½Π½ΠΎΠ³ΠΎ прСдставлСния ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ, для Ρ‡Π΅Π³ΠΎ ΠΎΠ½ΠΈ Π±Ρ‹Π»ΠΈ созданы ΠΈ ΠΊΡ‚ΠΎ ΠΈΠΌΠΈ ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ.И Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ваш ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Π» ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Π² Π΄Π°Π½Π½ΠΎΠΌ случаС Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ‡Π΅Ρ‚ΠΊΠΎ ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠ²Ρ‹ Π΅Π³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ .

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π»Π΅Π³Ρ‡ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°ΠΌ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ этих Π½ΠΎΠ²Ρ‹Ρ… ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΉ, Python ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ шаблон программирования ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ классов ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Π­Ρ‚ΠΎ гибкая ΠΈ мощная ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠ°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ классы ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ, Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ экзСмплярами классов .Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ с Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»Π΅ΠΌ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ класс с ΠΈΠΌΠ΅Π½Π΅ΠΌ car , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ опрСдСляСт Π΅Π³ΠΎ характСристики для ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°. ΠœΡ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ тысячи экзСмпляров этого класса car , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ этого класса.

ИдСя ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ абстрактной ΠΈ слоТной, Π½ΠΎ Ссли Π²Ρ‹ Π·Π°ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π»ΠΈ ΠΊΠ°ΠΊΠΎΠ΅-Π»ΠΈΠ±ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС, Π²Ρ‹, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡƒΠΆΠ΅ использовали ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Π΄Π°ΠΆΠ΅ Π½Π΅ осознавая этого. ΠŸΠΎΡ‡Ρ‚ΠΈ всС Π² Python прСдставляСт собой ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ , всС числа, строки, списки ΠΈ словари Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π² этот Ρ‚ΠΈΠΏ элСмСнта.Основная концСпция ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования сводится ΠΊ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ , связанным с Ρ‚ΠΈΠΏΠΎΠΌ:

  • Атрибуты - это характСристики, связанныС с Ρ‚ΠΈΠΏΠΎΠΌ.
  • ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ - это Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, связанныС с Ρ‚ΠΈΠΏΠΎΠΌ.

Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ с Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»Π΅ΠΌ Ρ†Π²Π΅Ρ‚ ΠΈ ΠΌΠ°Ρ€ΠΊΠ° - это Π΄Π²Π° Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°, связанных с ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ экзСмпляром ΠΈΠ»ΠΈ Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»Π΅ΠΌ, созданным с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ - это дСйствия, выполняСмыС Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»Π΅ΠΌ ΠΈΠ»ΠΈ Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»Π΅ΠΌ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅.Π‘ΠΎΠ»Π΅Π΅ ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ„Π°ΠΉΠ» Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ„Π°ΠΉΠ» ΠΈΠΌΠ΅Π΅Ρ‚ имя, Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΈ Π΄Π°Ρ‚Ρƒ создания.

Как Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ Π²Ρ‹ΡˆΠ΅, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Ρ‚ΠΈΠΏΠ° , ΠΊΠ°ΠΊ ΠΌΡ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ сдСлали здСсь, Python сообщаСт Π½Π°ΠΌ, ΠΊ ΠΊΠ°ΠΊΠΎΠΌΡƒ классу ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ пСрСмСнная. А ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ†Π΅Π»Ρ‹Ρ… чисСл ΠΈ строк ΡΠ²Π»ΡΡŽΡ‚ΡΡ классами, с Π½ΠΈΠΌΠΈ связано мноТСство Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ². Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ класса с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ dir Π² Python, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅:

Π’ ΠΌΠΎΠ΅ΠΉ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΎ строках я исслСдовал мноТСство ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² класса строк.ВзглянитС Π½Π° Π½Π΅Π³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ строк, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² этом случаС Π±ΡƒΠ΄ΡƒΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΠΌ экзСмпляром класса строк. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ всС ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, хотя содСрТимоС строки отличаСтся.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ сущСствуСт мноТСство ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ ΠΈ Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π΄Π²ΠΎΠΉΠ½Ρ‹ΠΌ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ?

Они Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ , ΠΈ ΠΈΡ… ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π΅ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ Ρ‚Π°ΠΊΠΈΠΌΠΈ странными ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ. ВмСсто этого ΠΎΠ½ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΌΠΈ функциями Python.Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΠ΅Ρ‚ΠΎΠ΄ __len__ вызываСтся Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ len .

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄, Π²Π°ΠΌ слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ help :

Когда ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ help для любой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈΠ»ΠΈ значСния, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ доступ ΠΊΠΎ всСй Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ для ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ класса. Π’ этом случаС ΠΌΡ‹ смотрим Π½Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ для классов str ΠΈ int .

Π₯отя Python поставляСтся с мноТСством ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… классов для нас, сила ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования проявляСтся Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ опрСдСляСм наши собствСнныС классы с ΠΈΡ… собствСнными Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌΠΈ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ.

Как ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡŒ Ρ€Π°Π½Π΅Π΅, Ρ†Π΅Π»ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΌΠΎΡ‡ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ€Π΅Π°Π»ΡŒΠ½ΡƒΡŽ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡŽ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΅Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π» ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€. Π”Π°Π²Π°ΠΉΡ‚Π΅ приступим ΠΊ созданию Π½ΠΎΠ²ΠΎΠ³ΠΎ класса Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ автомобиля:

Π”Π°Π²Π°ΠΉΡ‚Π΅ проясним ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ элСмСнты ΠΊΠΎΠ΄Π°:

  • Π’ Python ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π·Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово class , Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρƒ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ запускаСм Π½ΠΎΠ²Ρ‹ΠΉ класс. . Π—Π° Π½ΠΈΠΌ слСдуСт имя класса ΠΈ Π΄Π²ΠΎΠ΅Ρ‚ΠΎΡ‡ΠΈΠ΅. Руководства ΠΏΠΎ ΡΡ‚ΠΈΠ»ΡŽ Python Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽΡ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠΌΠ΅Π½Π° классов Π½Π°Ρ‡ΠΈΠ½Π°Π»ΠΈΡΡŒ с Π·Π°Π³Π»Π°Π²Π½ΠΎΠΉ Π±ΡƒΠΊΠ²Ρ‹ .Π’ ΠΌΠΎΠ΅ΠΌ случаС класс называСтся Car .
  • ПослС строки с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ класса ΠΈΠ΄Π΅Ρ‚ Ρ‚Π΅Π»ΠΎ класса с отступом Π²ΠΏΡ€Π°Π²ΠΎ ΠΏΠΎ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ Ρ†ΠΈΠΊΠ»ΠΎΠ² ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.
  • ΠœΡ‹ рассмотрим ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ init ΠΈ repr Π² Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚ΠΎΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ этой ΡΡ‚Π°Ρ‚ΡŒΠΈ.

Как ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ нашС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ класса Car? ВСроятно, ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ‚Π΅ ΠΆΠ΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΡΠ²ΡΠ·Π°Ρ‚ΡŒ с Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»Π΅ΠΌ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΌΠ°Ρ€ΠΊΡƒ ΠΈ Ρ†Π²Π΅Ρ‚.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ приступим ΠΊ созданию экзСмпляра класса Car ΠΈ присвоим Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ с ΠΈΠΌΠ΅Π½Π΅ΠΌ Β«my_carΒ». Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ экзСмпляр любого класса, ΠΌΡ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ имя класса, ΠΊΠ°ΠΊ Ссли Π±Ρ‹ это Π±Ρ‹Π»Π° функция:

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

Бинтаксис, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ для доступа ΠΊ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌ, называСтся Ρ‚ΠΎΡ‡Π΅Ρ‡Π½ΠΎΠΉ Π½ΠΎΡ‚Π°Ρ†ΠΈΠ΅ΠΉ ΠΈΠ·-Π·Π° Ρ‚ΠΎΡ‡ΠΊΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ.ВочСчная запись позволяСт ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Π»ΡŽΠ±Ρ‹ΠΌ возмоТностям ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊ Π±Ρ€Π΅Π½Π΄Ρƒ ΠΈΠ»ΠΈ Ρ†Π²Π΅Ρ‚Ρƒ.

Атрибуты ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ собствСнныС Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹. НапримСр, ΠΌΡ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ upper ΠΈΠ»ΠΈ capize для измСнСния ΠΎΠ±ΠΎΠΈΡ… строковых Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² ΠΌΠΎΠ΅Π³ΠΎ экзСмпляра:

Π”ΠΎ сих ΠΏΠΎΡ€ ΠΌΡ‹ создали ΠΎΠ΄ΠΈΠ½ экзСмпляр класса Car ΠΈ установили Π΅Π³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ экзСмпляр класса с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌΠΈ:

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΏΠΎ сути, Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ выполняли ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ дСйствия.НапримСр, Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ ΠΈ Π·Π°Π³Π»Π°Π²Π½Ρ‹Π΅ для строк. ΠšΠ»ΡŽΡ‡ ΠΊ познанию ΠΈΠ½Ρ‚ΡƒΠΈΡ†ΠΈΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π² O.O.P. это ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ - это Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌΠΈ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ экзСмпляра класса . Когда ΠΌΡ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ lower для строки, ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΠΌ содСрТимоС этой ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ строки Π² Π½ΠΈΠΆΠ½ΠΈΠΉ рСгистр.

Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅, создав Π½ΠΎΠ²Ρ‹ΠΉ класс с ΠΈΠΌΠ΅Π½Π΅ΠΌ Dog ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ² наши собствСнныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ класс ΠΈ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π΅Π³ΠΎ экзСмпляр, ΠΊΠ°ΠΊ ΠΌΡ‹ Π΄Π΅Π»Π°Π»ΠΈ это Ρ€Π°Π½ΡŒΡˆΠ΅ с классом Car.Π₯отя моя собака ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎΠΉ, ΠΎΠ½Π° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… дСйствий, ΠΏΠΎΠΊΠ° я Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡŽ для Π½Π΅Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹. ВзглянитС Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

Как ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ, ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова def Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ отступ справа ΠΎΡ‚ Ρ‚Π΅Π»Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, ΠΊΠ°ΠΊ Ссли Π±Ρ‹ ΠΌΡ‹ для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Ѐункция ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Β«selfΒ». Π­Ρ‚ΠΎΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ прСдставляСт экзСмпляр, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ выполняСтся ΠΌΠ΅Ρ‚ΠΎΠ΄.

Π”Π°ΠΆΠ΅ Ссли моя собака Π»Π°Π΅Ρ‚, ΠΎΠ½Π° всСгда Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ это ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ.ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ‚ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Π»Π°ΡΡ‚ΡŒ, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ простой ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ Π² Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°Ρ… ΠΈ ​​мСтодах, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ настраиваСм для Π½Π°ΡˆΠΈΡ… классов:

Оба класса, созданныС Π΄ΠΎ этого ΠΏΠ°Ρ€Π°Π³Ρ€Π°Ρ„Π°, содСрТат значСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΊΠ°ΠΊ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹. Π­Ρ‚ΠΎ Π½Π΅ ΠΈΠ΄Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ сцСнарий, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ создаСт ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΈ, Ρ‡Ρ‚ΠΎ Π±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½ΠΎ, , Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΡ‡Π΅Π½ΡŒ Π»Π΅Π³ΠΊΠΎ Π·Π°Π±Ρ‹Ρ‚ΡŒ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π²Π°ΠΆΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ .

Π˜Ρ‚Π°ΠΊ, ΠΏΡ€ΠΈ написании ΠΊΠΎΠ΄Π° рСкомСндуСтся ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Π² зависимости ΠΎΡ‚ экзСмпляра ΠΏΡ€ΠΈ создании класса, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ экзСмпляр содСрТит ΠΎΠ΄Π½ΠΈ ΠΈ Ρ‚Π΅ ΠΆΠ΅ Π²Π°ΠΆΠ½Ρ‹Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹.Для этого Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Constructor .

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ класса - это ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ вызываСтся ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΈΠΌΠ΅Π½ΠΈ класса. Он всСгда называСтся init .

Он содСрТит ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово self, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ относится ΠΊ создаваСмому экзСмпляру, ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Ρ‹ программистом ΠΊΠ°ΠΊ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ послС создания экзСмпляра, ΠΊΠ°ΠΊ ΠΌΡ‹ это Π΄Π΅Π»Π°Π΅ΠΌ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π½ΠΈΠΆΠ΅:

Π’Ρ‚ΠΎΡ€ΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ class - это ΠΌΠ΅Ρ‚ΠΎΠ΄ repr , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сообщаСт Python ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° вызываСтся экзСмпляр класса, ΠΊΠ°ΠΊ Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ Π²Ρ‹ΡˆΠ΅.

Π₯ΠΎΡ‚ΠΈΡ‚Π΅ Π·Π½Π°Ρ‚ΡŒ, какая функция Ρƒ Ρ‚ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°? Π‘ΠΌ. Π Π°Π½Π΅Π΅ Π²Π²Π΅Π΄Π΅Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ help . ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ встроСнныС классы Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ руководство, ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‰Π΅Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΈΠ½Ρ‚ΡƒΠΈΡ†ΠΈΡŽ, Π»Π΅ΠΆΠ°Ρ‰ΡƒΡŽ Π² основС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΈΠ»ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°, ΠΌΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это для Π½Π°ΡˆΠΈΡ… собствСнных классов, ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это, Π΄ΠΎΠ±Π°Π²ΠΈΠ² Docstring .

Π‘Ρ‚Ρ€ΠΎΠΊΠ° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ - это ΠΊΡ€Π°Ρ‚ΠΊΠΈΠΉ тСкст, ΠΎΠ±ΡŠΡΡΠ½ΡΡŽΡ‰ΠΈΠΉ, Ρ‡Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚.

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

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

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

Π’ Python ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΊΡ€ΡƒΠ³Π»Ρ‹Π΅ скобки Π² объявлСнии класса, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ наслСдования . Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ транспорта я использовал синтаксис Python, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρƒ, Ρ‡Ρ‚ΠΎ ΠΈ Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ, ΠΈ ΠΏΠΎΠ΅Π·Π΄ Π½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ΡΡ ΠΎΡ‚ класса MyTransports. Из-Π·Π° этого Ρƒ Π½ΠΈΡ… автоматичСски Π΅ΡΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ конструктор, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ устанавливаСт Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ Ρ†Π²Π΅Ρ‚Π° ΠΈ Π±Ρ€Π΅Π½Π΄Π°.

ΠžΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

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

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