Ооп python 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. ΠšΡƒΡ€Ρ

ΠšΡƒΡ€Ρ «ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° 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 — ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ ΠžΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ (ООП)


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

Π’ 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 | ΠšΠ»Π°ΡΡΡ‹ ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹

ΠšΠ»Π°ΡΡΡ‹ ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹

ПослСднСС обновлСниС: 06.07.2018

Python ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΡƒ программирования, Π° это Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² Π²ΠΈΠ΄Π΅ классов.

Класс являСтся шаблоном ΠΈΠ»ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ описаниСм ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ прСдставляСт экзСмпляр этого класса, Π΅Π³ΠΎ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ΅ Π²ΠΎΠΏΠ»ΠΎΡ‰Π΅Π½ΠΈΠ΅. МоТно провСсти ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ аналогию: Ρƒ всСх Ρƒ нас Π΅ΡΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ прСдставлСниС ΠΎ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ΅ — Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π΄Π²ΡƒΡ… Ρ€ΡƒΠΊ, Π΄Π²ΡƒΡ… Π½ΠΎΠ³, Π³ΠΎΠ»ΠΎΠ²Ρ‹, ΠΏΠΈΡ‰Π΅Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ, Π½Π΅Ρ€Π²Π½ΠΎΠΉ систСмы, Π³ΠΎΠ»ΠΎΠ²Π½ΠΎΠ³ΠΎ ΠΌΠΎΠ·Π³Π° ΠΈ Ρ‚.Π΄. Π•ΡΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ шаблон — этот шаблон ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π·Π²Π°Ρ‚ΡŒ классом. РСально ΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ (фактичСски экзСмпляр Π΄Π°Π½Π½ΠΎΠ³ΠΎ класса) являСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ этого класса.

Π‘ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния ΠΊΠΎΠ΄Π° класс ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ Π½Π°Π±ΠΎΡ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ класса Π΅Ρ‰Π΅ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ. Они ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ класса. А ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ класса Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌΠΈ- ΠΎΠ½ΠΈ хранят состояниС класса

Класс опрСдСляСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова class:


class названиС_класса:
    ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹_класса

Для создания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° класса ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ синтаксис:


Π½Π°Π·Π²Π°Π½ΠΈΠ΅_ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° = Π½Π°Π·Π²Π°Π½ΠΈΠ΅_класса([ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹])

НапримСр, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΉ класс Person, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°:


class Person:
    name = "Tom"

    def display_info(self):
        print("ΠŸΡ€ΠΈΠ²Π΅Ρ‚, мСня Π·ΠΎΠ²ΡƒΡ‚", self.name)

person1 = Person()
person1.display_info()         # ΠŸΡ€ΠΈΠ²Π΅Ρ‚, мСня Π·ΠΎΠ²ΡƒΡ‚ Tom

person2 = Person()
person2.name = "Sam"
person2.display_info()         # ΠŸΡ€ΠΈΠ²Π΅Ρ‚, мСня Π·ΠΎΠ²ΡƒΡ‚ Sam

Класс Person опрСдСляСт Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ name, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ…Ρ€Π°Π½ΠΈΡ‚ имя Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°, ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ display_info, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ выводится информация ΠΎ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ΅.

ΠŸΡ€ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² любого класса слСдуСт ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ всС ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π² качСствС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ссылку Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ согласно условностям называСтся self (Π² рядС языков программирования Π΅ΡΡ‚ΡŒ своСго Ρ€ΠΎΠ΄Π° Π°Π½Π°Π»ΠΎΠ³ — ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово this). Π§Π΅Ρ€Π΅Π· эту ссылку Π²Π½ΡƒΡ‚Ρ€ΠΈ класса ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ ΠΈΠ»ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌ этого ΠΆΠ΅ класса. Π’ частности, Ρ‡Π΅Ρ€Π΅Π· Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ self.name ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

ПослС опрСдСлСния класс Person создаСм ΠΏΠ°Ρ€Ρƒ Π΅Π³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² — person1 ΠΈ person2. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ имя ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ Π΅Π³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌ. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ display_info(), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ строку Π½Π° консоль, ΠΈ Ρƒ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Ρ‚Π°ΠΊΠΆΠ΅ измСняСм Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ name. ΠŸΡ€ΠΈ этом ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° display_info Π½Π΅ Π½Π°Π΄ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° self.

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

Для создания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° класса ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ конструктор. Π’Π°ΠΊ, Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ создавали ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ класса Person, ΠΌΡ‹ использовали конструктор ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ нСявно ΠΈΠΌΠ΅ΡŽΡ‚ всС классы:


person1 = Person()
person2 = Person()

Однако ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ явным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π² классах конструктор с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ называСтся __init(). К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ класс Person, Π΄ΠΎΠ±Π°Π²ΠΈΠ² Π² Π½Π΅Π³ΠΎ конструктор:


class Person:

    # конструктор
    def __init__(self, name):
        self.name = name  # устанавливаСм имя

    def display_info(self):
        print("ΠŸΡ€ΠΈΠ²Π΅Ρ‚, мСня Π·ΠΎΠ²ΡƒΡ‚", self.name)


person1 = Person("Tom")
person1.display_info()         # ΠŸΡ€ΠΈΠ²Π΅Ρ‚, мСня Π·ΠΎΠ²ΡƒΡ‚ Tom
person2 = Person("Sam")
person2.display_info()         # ΠŸΡ€ΠΈΠ²Π΅Ρ‚, мСня Π·ΠΎΠ²ΡƒΡ‚ Sam

Π’ качСствС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° конструктор Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ссылку Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ — self. НСрСдко Π² конструкторах ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ класса. Π’Π°ΠΊ, Π² Π΄Π°Π½Π½ΠΎΠΌ случаС Π² качСствС Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Π² конструктор пСрСдаСтся имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ устанавливаСтся для Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° self.name. ΠŸΡ€ΠΈΡ‡Π΅ΠΌ для Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ Π² классС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ name, ΠΊΠ°ΠΊ это Π±Ρ‹Π»ΠΎ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ вСрсии класса Person. Установка значСния self.name = name ΡƒΠΆΠ΅ нСявно создаСт Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ name.


person1 = Person("Tom")
person2 = Person("Sam")

Π’ ΠΈΡ‚ΠΎΠ³Π΅ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ½ΡΠΎΠ»ΡŒΠ½Ρ‹ΠΉ Π²Ρ‹Π²ΠΎΠ΄:


ΠŸΡ€ΠΈΠ²Π΅Ρ‚, мСня Π·ΠΎΠ²ΡƒΡ‚ Tom
ΠŸΡ€ΠΈΠ²Π΅Ρ‚, мСня Π·ΠΎΠ²ΡƒΡ‚ Sam

ДСструктор

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


person1 = Person("Tom")
del person1		# ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΈΠ· памяти
# person1.display_info()  # Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ person1 ΡƒΠΆΠ΅ ΡƒΠ΄Π°Π»Π΅Π½ ΠΈΠ· памяти

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

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π² классС дСструктор, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π² Π²ΡΡ‚Ρ€ΠΎΠ΅Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ __del__, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π»ΠΈΠ±ΠΎ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π²Ρ‹Π·ΠΎΠ²Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° del, Π»ΠΈΠ±ΠΎ ΠΏΡ€ΠΈ автоматичСском ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. НапримСр:


class Person:
    # конструктор
    def __init__(self, name):
        self.name = name  # устанавливаСм имя

    def __del__(self):
        print(self.name,"ΡƒΠ΄Π°Π»Π΅Π½ ΠΈΠ· памяти")
    def display_info(self):
        print("ΠŸΡ€ΠΈΠ²Π΅Ρ‚, мСня Π·ΠΎΠ²ΡƒΡ‚", self.name)


person1 = Person("Tom")
person1.display_info()  # ΠŸΡ€ΠΈΠ²Π΅Ρ‚, мСня Π·ΠΎΠ²ΡƒΡ‚ Tom
del person1     # ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΈΠ· памяти
person2 = Person("Sam")
person2.display_info()  # ΠŸΡ€ΠΈΠ²Π΅Ρ‚, мСня Π·ΠΎΠ²ΡƒΡ‚ Sam

ΠšΠΎΠ½ΡΠΎΠ»ΡŒΠ½Ρ‹ΠΉ Π²Ρ‹Π²ΠΎΠ΄:


ΠŸΡ€ΠΈΠ²Π΅Ρ‚, мСня Π·ΠΎΠ²ΡƒΡ‚ Tom
Tom ΡƒΠ΄Π°Π»Π΅Π½ ΠΈΠ· памяти
ΠŸΡ€ΠΈΠ²Π΅Ρ‚, мСня Π·ΠΎΠ²ΡƒΡ‚ Sam
Sam ΡƒΠ΄Π°Π»Π΅Π½ ΠΈΠ· памяти

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ классов Π² модулях ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, классы Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… модулях ΠΈ Π·Π°Ρ‚Π΅ΠΌ ΡƒΠΆΠ΅ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² основой скрипт ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠŸΡƒΡΡ‚ΡŒ Ρƒ нас Π±ΡƒΠ΄Π΅Ρ‚ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Π΄Π²Π° Ρ„Π°ΠΉΠ»Π°: Ρ„Π°ΠΉΠ» main.py (основной скрипт ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹) ΠΈ classes.py (скрипт с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ классов).

Π’ Ρ„Π°ΠΉΠ»Π΅ classes.py ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ Π΄Π²Π° класса:


class Person:

    # конструктор
    def __init__(self, name):
        self.name = name  # устанавливаСм имя

    def display_info(self):
        print("ΠŸΡ€ΠΈΠ²Π΅Ρ‚, мСня Π·ΠΎΠ²ΡƒΡ‚", self.name)


class Auto:
    def __init__(self, name):
        self.name = name

    def move(self, speed):
        print(self.name, "Π΅Π΄Π΅Ρ‚ со ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ", speed, "ΠΊΠΌ/Ρ‡")

Π’ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ классу Person здСсь Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ класс Auto, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдставляСт ΠΌΠ°ΡˆΠΈΠ½Ρƒ ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ move ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ name. ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΠΌ эти классы ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΈΡ… Π² скриптС main.py:


from classes import Person, Auto

tom = Person("Tom")
tom.display_info()

bmw = Auto("BMW")
bmw.move(65)

ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ классов происходит Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈΠ· модуля. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ вСсь ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ:


import classes

Π›ΠΈΠ±ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ классы, ΠΊΠ°ΠΊ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Ρ‹ΡˆΠ΅.

Π’ ΠΈΡ‚ΠΎΠ³Π΅ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ½ΡΠΎΠ»ΡŒΠ½Ρ‹ΠΉ Π²Ρ‹Π²ΠΎΠ΄:


ΠŸΡ€ΠΈΠ²Π΅Ρ‚, мСня Π·ΠΎΠ²ΡƒΡ‚ Tom
BMW Π΅Π΄Π΅Ρ‚ со ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ 65 ΠΊΠΌ/Ρ‡

Python. Π£Ρ€ΠΎΠΊ 14. ΠšΠ»Π°ΡΡΡ‹ ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹

Π”Π°Π½Π½Ρ‹ΠΉ ΡƒΡ€ΠΎΠΊ посвящСн ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ Π² Python. Π Π°Π·ΠΎΠ±Ρ€Π°Π½Ρ‹ Ρ‚Π°ΠΊΠΈΠ΅ Ρ‚Π΅ΠΌΡ‹ ΠΊΠ°ΠΊ созданиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ классов, Ρ€Π°Π±ΠΎΡ‚Π° с конструктором, наслСдованиС ΠΈ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ Π² Python.

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ (ООП) являСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΠ΅ΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния, Π² основС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π»Π΅ΠΆΠΈΡ‚ понятиС класса ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΏΡ€ΠΈ этом сама ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° создаСтся ΠΊΠ°ΠΊ нСкоторая ΡΠΎΠ²ΠΎΠΊΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽ Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΠΈ с внСшним ΠΌΠΈΡ€ΠΎΠΌ. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ являСтся экзСмпляром Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ класса. ΠšΠ»Π°ΡΡΡ‹ ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ. Π‘ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΎ понятии ООП ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π½Π° Π²ΠΈΠΊΠΈΠΏΠ΅Π΄ΠΈΠΈ.

Π’Ρ‹Π΄Π΅Π»ΡΡŽΡ‚ Ρ‚Ρ€ΠΈ основных β€œΡΡ‚ΠΎΠ»ΠΏΠ°β€ ООП- это инкапсуляция, наслСдованиС ΠΈ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ.

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

Под инкапсуляциСй понимаСтся сокрытиС Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Ρ‚.ΠΏ. ΠΎΡ‚ внСшнСй стороны. НапримСр, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ класс β€œΡ…ΠΎΠ»ΠΎΠ΄ΠΈΠ»ΡŒΠ½ΠΈΠΊβ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅: ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ, объСм, количСство ΠΊΠ°ΠΌΠ΅Ρ€ хранСния, потрСбляСмая ΠΌΠΎΡ‰Π½ΠΎΡΡ‚ΡŒ ΠΈ Ρ‚.ΠΏ., ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹: ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ/Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ…ΠΎΠ»ΠΎΠ΄ΠΈΠ»ΡŒΠ½ΠΈΠΊ, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ/Π²Ρ‹ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ, Π½ΠΎ ΠΏΡ€ΠΈ этом рСализация Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ происходит нСпосрСдствСнно Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΈ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ вашСго класса Π½Π΅ доступна, Ρ‡Ρ‚ΠΎ позволяСт Π΅Π΅ ΠΌΠ΅Π½ΡΡ‚ΡŒ Π±Π΅Π· опасСния, Ρ‡Ρ‚ΠΎ это ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚Ρ€Π°Π·ΠΈΡ‚ΡŒΡΡ Π½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π΅ΠΉ класс Β«Ρ…ΠΎΠ»ΠΎΠ΄ΠΈΠ»ΡŒΠ½ΠΈΠΊΒ» ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. ΠŸΡ€ΠΈ этом класс становится Π½ΠΎΠ²Ρ‹ΠΌ Ρ‚ΠΈΠΏΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ€Π°ΠΌΠΊΠ°Ρ… Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. МоТно ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ этого Π½ΠΎΠ²ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, Ρ‚Π°ΠΊΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹.

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

Под наслСдованиСм понимаСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ создания Π½ΠΎΠ²ΠΎΠ³ΠΎ класса Π½Π° Π±Π°Π·Π΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ. НаслСдованиС ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ β€œΡΠ²Π»ΡΠ΅Ρ‚ΡΡβ€ ΠΌΠ΅ΠΆΠ΄Ρƒ классом наслСдником ΠΈ классом Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΌ. ΠŸΡ€ΠΈ этом класс ΠΏΠΎΡ‚ΠΎΠΌΠΎΠΊ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Ρ‚Π΅ ΠΆΠ΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, Ρ‡Ρ‚ΠΎ ΠΈ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ класс, Π½ΠΎ ΠΏΡ€ΠΈ этом Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ (ΠΈ Π½ΡƒΠΆΠ½ΠΎ) Ρ€Π°ΡΡˆΠΈΡ€ΡΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π·Β Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ².

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса, Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ наслСдованиС, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ класс β€œΠ°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒβ€, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹: масса, ΠΌΠΎΡ‰Π½ΠΎΡΡ‚ΡŒ двигатСля, объСм Ρ‚ΠΎΠΏΠ»ΠΈΠ²Π½ΠΎΠ³ΠΎ Π±Π°ΠΊΠ° ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹: завСсти ΠΈ Π·Π°Π³Π»ΡƒΡˆΠΈΡ‚ΡŒ. Π£ Ρ‚Π°ΠΊΠΎΠ³ΠΎ класса ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΡ‚ΠΎΠΌΠΎΠΊ – β€œΠ³Ρ€ΡƒΠ·ΠΎΠ²ΠΎΠΉ Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒβ€, ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Ρ‚Π΅ ΠΆΠ΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, Ρ‡Ρ‚ΠΎ ΠΈ класс β€œΠ°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒβ€, ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свойства: количСство осСй, ΠΌΠΎΡ‰Π½ΠΎΡΡ‚ΡŒ компрСссора ΠΈ Ρ‚.ΠΏ..

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

ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ позволяСт ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΌΠΈ ΠΎΠ΄Π½ΠΎΡ‚ΠΈΠΏΠ½Ρ‹ΠΉ интСрфСйс, нСзависимо ΠΎΡ‚ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. НапримСр, с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ класса β€œΠ³Ρ€ΡƒΠ·ΠΎΠ²ΠΎΠΉ Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒβ€ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ‚Π΅ ΠΆΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎ ΠΈ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ класса β€œΠ°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒβ€, Ρ‚.ΠΊ. ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ являСтся наслСдником Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ, ΠΏΡ€ΠΈ этом ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ΅ ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π½Π΅Π²Π΅Ρ€Π½ΠΎ (Π²ΠΎ всяком случаС Π½Π΅ всСгда). Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ Ρ€Π°Π·Π½ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ. Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΏΡ€ΠΈ наслСдовании, ΠΊΠΎΠ³Π΄Π° Π² классС наслСдникС ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса родитСля.

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

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ класса Π²Β Python начинаСтся с инструкции class. Π’ΠΎΡ‚ Ρ‚Π°ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ класс.

class C: 
    pass

Класс состоит ΠΈΠ· объявлСния (инструкция class), ΠΈΠΌΠ΅Π½ΠΈ класса (нашСм случаС это имя C) ΠΈ Ρ‚Π΅Π»Π° класса, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ содСрТит Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ (Π² нашСм минимальном классС Π΅ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Π° инструкция pass).

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ синтаксисом:

имя_ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° = имя_класса()

БтатичСскиС ΠΈ динамичСскиС Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ класса

Как ΡƒΠΆΠ΅ Π±Ρ‹Π»ΠΎ сказано Π²Ρ‹ΡˆΠ΅, класс ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹. Атрибут ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ статичСским ΠΈ динамичСским (уровня ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° класса). Π‘ΡƒΡ‚ΡŒ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ со статичСским Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠΌ, Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ экзСмпляр класса, Π° для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с динамичСским – Π½ΡƒΠΆΠ½ΠΎ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

class Rectangle:
Β Β Β Β default_color = "green"

Β Β Β Β def __init__(self, width, height):
Β Β Β Β Β Β Β Β self.width = width
Β Β Β Β Β Β Β Β self.height = height

Π’ прСдставлСнном Π²Ρ‹ΡˆΠ΅ классС, Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ default_color – это статичСский Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚, ΠΈ доступ ΠΊ Π½Π΅ΠΌΡƒ, ΠΊΠ°ΠΊ Π±Ρ‹Π»ΠΎ сказано Π²Ρ‹ΡˆΠ΅, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π½Π΅ создавая ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса Rectangle.

>>> Rectangle.default_color
'green'

width ΠΈ height – это динамичСскиС Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹, ΠΏΡ€ΠΈ ΠΈΡ… создании Π±Ρ‹Π»ΠΎ использовано ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово self. Пока просто ΠΏΡ€ΠΈΠΌΠΈΡ‚Π΅ это ΠΊΠ°ΠΊ Π΄ΠΎΠ»ΠΆΠ½ΠΎΠ΅, Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΏΡ€ΠΎ self Π±ΡƒΠ΄Π΅Ρ‚ рассказано Π½ΠΈΠΆΠ΅. Для доступа ΠΊ width ΠΈ height ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса Rectangle:

>>> rect = Rectangle(10, 20)
>>> rect.width
10
>>> rect.height
20

Если ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ Ρ‡Π΅Ρ€Π΅Π· класс, Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΠΎΡˆΠΈΠ±ΠΊΡƒ:

>>> Rectangle.width
Traceback (most recent call last):
Β Β File "<stdin>", line 1, in <module>
AttributeError: type object 'Rectangle' has no attribute 'width'

ΠŸΡ€ΠΈ этом, Ссли Π²Ρ‹ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ΡΡŒ ΠΊ статичСскому Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρƒ Ρ‡Π΅Ρ€Π΅Π· экзСмпляр класса, Ρ‚ΠΎ всС Π±ΡƒΠ΄Π΅Ρ‚ ОК, Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π²Ρ‹ Π½Π΅ ΠΏΠΎΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ Π΅Π³ΠΎ ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ.Β 

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ Π΅Ρ‰Ρ‘ Ρ€Π°Π· Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° default_color:

>>> Rectangle.default_color
'green'

ΠŸΡ€ΠΈΡΠ²ΠΎΠΈΠΌ Π΅ΠΌΡƒ Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅:

>>> Rectangle.default_color = "red"
>>> Rectangle.default_color
'red'

Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π΄Π²Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° класса RectangleΒ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ, Ρ‡Ρ‚ΠΎ default_color Ρƒ Π½ΠΈΡ… совпадаСт:

>>> r1 = Rectangle(1,2)
>>> r2 = Rectangle(10, 20)
>>> r1.default_color
'red'
>>> r2.default_color
'red'

Если ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ default_colorΒ Ρ‡Π΅Ρ€Π΅Π· имя класса Rectangle, Ρ‚ΠΎ всС Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎ: Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² r1 ΠΈ r2 это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ измСнится, Π½ΠΎ Ссли ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ Π΅Π³ΠΎ Ρ‡Π΅Ρ€Π΅Π· экзСмпляр класса, Ρ‚ΠΎ Ρƒ экзСмпляра Π±ΡƒΠ΄Π΅Ρ‚ создан Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ с Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΊΠ°ΠΊ статичСский, Π° доступ ΠΊ послСднСму Π±ΡƒΠ΄Π΅Ρ‚ потСрян:

МСняСм default_color Ρ‡Π΅Ρ€Π΅Π· r1:

>>> r1.default_color = "blue"
>>> r1.default_color
'blue'

ΠŸΡ€ΠΈ этом Ρƒ r2 остаСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ статичСского Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°:

>>> r2.default_color
'red'
>>> Rectangle.default_color
'red'

Π’ΠΎΠΎΠ±Ρ‰Π΅ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌΠΈ – Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠ°Ρ идСя, Π»ΡƒΡ‡ΡˆΠ΅ для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ свойства.

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

Π”ΠΎΠ±Π°Π²ΠΈΠΌ ΠΊ Π½Π°ΡˆΠ΅ΠΌΡƒ классу ΠΌΠ΅Ρ‚ΠΎΠ΄. ΠœΠ΅Ρ‚ΠΎΠ΄ – это функция, находящаяся Π²Π½ΡƒΡ‚Ρ€ΠΈ класса ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰Π°Ρ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ.

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π±Ρ‹Π²Π°ΡŽΡ‚ статичСскими, классовыми (срСднСС ΠΌΠ΅ΠΆΠ΄Ρƒ статичСскими ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌΠΈ) ΠΈ уровня класса (Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡ… Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒ просто словом ΠΌΠ΅Ρ‚ΠΎΠ΄). БтатичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ создаСтся с Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ @staticmethod, классовый – с Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ @classmethod,Β ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ Π² Π½Π΅Π³ΠΎ пСрСдаСтся cls, ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ создаСтся Π±Π΅Π· ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€Π°, Π΅ΠΌΡƒ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ пСрСдаСтся self:

class MyClass:

Β Β Β Β @staticmethod
Β Β Β Β def ex_static_method():
Β Β Β Β Β Β Β Β print("static method")

Β Β Β Β @classmethod
Β Β Β Β def ex_class_method(cls):
Β Β Β Β Β Β Β Β print("class method")

Β Β Β Β def ex_method(self):
Β Β Β Β Β Β Β Β print("method")

БтатичСский ΠΈ классовый ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ, Π½Π΅ создавая экзСмпляр класса, для Π²Ρ‹Π·ΠΎΠ²Π° ex_method() Π½ΡƒΠΆΠ΅Π½ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚:

>>> MyClass.ex_static_method()
static method

>>> MyClass.ex_class_method()
class method

>>> MyClass.ex_method()
Traceback (most recent call last):
Β Β File "<stdin>", line 1, in <module>
TypeError: ex_method() missing 1 required positional argument: 'self'

>>> m = MyClass()
>>> m.ex_method()
method

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ класса ΠΈ инициализация экзСмпляра класса

Π’ Python Ρ€Π°Π·Π΄Π΅Π»ΡΡŽΡ‚ конструктор класса ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ для ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ экзСмпляра класса. ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ класса это ΠΌΠ΅Ρ‚ΠΎΠ΄ __new__(cls, *args, **kwargs) для ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ экзСмпляра класса ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ __init__(self). ΠŸΡ€ΠΈ этом, ΠΊΠ°ΠΊ Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ __new__ – это классовый ΠΌΠ΅Ρ‚ΠΎΠ΄, Π° __init__ Ρ‚Π°ΠΊΠΈΠΌ Π½Π΅ являСтся. ΠœΠ΅Ρ‚ΠΎΠ΄ __new__ Ρ€Π΅Π΄ΠΊΠΎ пСрСопрСдСляСтся, Ρ‡Π°Ρ‰Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ рСализация ΠΎΡ‚ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса object (см. Ρ€Π°Π·Π΄Π΅Π» НаслСдованиС), __init__ ΠΆΠ΅ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚ являСтся ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌ способом Π·Π°Π΄Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΏΡ€ΠΈ Π΅Π³ΠΎ создании.

Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ класса Rectangle с ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹ΠΌ конструктором ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠΌ, Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ задаСтся ΡˆΠΈΡ€ΠΈΠ½Π° ΠΈ высота ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°:

class Rectangle:

Β Β Β Β def __new__(cls, *args, **kwargs):
Β Β Β Β Β Β Β Β print("Hello from __new__")
Β Β Β Β Β Β Β Β return super().__new__(cls)

Β Β Β Β def __init__(self, width, height):
Β Β Β Β Β Β Β Β print("Hello from __init__")
Β Β Β Β Β Β Β Β self.width = width
Β Β Β Β Β Β Β Β self.height = height


>>> rect = Rectangle(10, 20)
Hello from __new__
Hello from __init__

>>> rect.width
10

>>> rect.height
20

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

Π”ΠΎ этого ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π²Ρ‹ ΡƒΠΆΠ΅ успСли ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ словом self. self – это ссылка Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ экзСмпляр класса, Π² Ρ‚Π°ΠΊΠΈΡ… языках ΠΊΠ°ΠΊ Java, C# Π°Π½Π°Π»ΠΎΠ³ΠΎΠΌ являСтся ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово this. Π§Π΅Ρ€Π΅Π· self Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ доступ ΠΊ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ класса Π²Π½ΡƒΡ‚Ρ€ΠΈ Π½Π΅Π³ΠΎ:

class Rectangle:

Β Β Β Β def __init__(self, width, height):
Β Β Β Β Β Β Β Β self.width = width
Β Β Β Β Β Β Β Β self.height = height

Β Β Β Β def area(self):
Β Β Β Β Β Β Β Β return self.width * self.height

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ area ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ доступ ΠΊ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌ width ΠΈ height для расчСта ΠΏΠ»ΠΎΡ‰Π°Π΄ΠΈ. Если Π±Ρ‹ Π² качСствС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Π½Π΅ Π±Ρ‹Π»ΠΎ ΡƒΠΊΠ°Π·Π°Π½ΠΎ self, Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ area ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π±Ρ‹Π»Π° Π±Ρ‹ остановлСна с ошибкой.

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

Если Π²Ρ‹ Π·Π½Π°ΠΊΠΎΠΌΡ‹ с языками программирования Java, C#, C++ Ρ‚ΠΎ, Π½Π°Π²Π΅Ρ€Π½ΠΎΠ΅, ΡƒΠΆΠ΅ задались вопросом: β€œΠ° ΠΊΠ°ΠΊ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΡƒΡ€ΠΎΠ²Π½Π΅ΠΌ доступа?”. Π’ пСрСчислСнных языка Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ явно ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Ρ‡Ρ‚ΠΎ доступ ΠΊ Π½Π΅ΠΉ снаруТи класса Π·Π°ΠΏΡ€Π΅Ρ‰Π΅Π½, это дСлаСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… слов (private, protected ΠΈ Ρ‚.Π΄.). Π’ Python Ρ‚Π°ΠΊΠΈΡ… возмоТностСй Π½Π΅Ρ‚, ΠΈ любой ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ вашСго класса, Ссли Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚ такая Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ. Π­Ρ‚ΠΎ сущСствСнный нСдостаток этого языка, Ρ‚.ΠΊ. Π½Π°Ρ€ΡƒΡˆΠ°Π΅Ρ‚ΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² ООП – инкапсуляция. Π₯ΠΎΡ€ΠΎΡˆΠΈΠΌ Ρ‚ΠΎΠ½ΠΎΠΌ считаСтся, Ρ‡Ρ‚ΠΎ для чтСния/измСнСния ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Ρ‚ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ getter/setter, ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Π½ΠΎ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ ΠΏΠΎΠΌΠ΅ΡˆΠ°Π΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ. ΠŸΡ€ΠΈ этом Π΅ΡΡ‚ΡŒ соглашСниС, Ρ‡Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΠ»ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ начинаСтся с Π½ΠΈΠΆΠ½Π΅Π³ΠΎ подчСркивания, являСтся скрытым, ΠΈ снаруТи класса Ρ‚Ρ€ΠΎΠ³Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ (хотя ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это ΠΌΠΎΠΆΠ½ΠΎ).

ВнСсСм ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ измСнСния Π² класс Rectangle:

class Rectangle:

Β Β Β Β def __init__(self, width, height):
Β Β Β Β Β Β Β Β self._width = width
Β Β Β Β Β Β Β Β self._height = height

Β Β Β Β def get_width(self):
Β Β Β Β Β Β Β Β return self._width

Β Β Β Β def set_width(self, w):
Β Β Β Β Β Β Β Β self._width = w

Β Β Β Β def get_height(self):
Β Β Β Β Β Β Β Β return self._height

Β Β Β Β def set_height(self, h):
Β Β Β Β Β Β Β Β self._height = h

Β Β Β Β def area(self):
Β Β Β Β Β Β Β Β return self._width * self._height

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ для доступа ΠΊ _width ΠΈ _height ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, Π½ΠΎ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ ΠΌΠ΅ΡˆΠ°Π΅Ρ‚ Π²Π°ΠΌ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ Π½ΠΈΠΌ (Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌ) Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ.

>>> rect = Rectangle(10, 20)

>>> rect.get_width()
10

>>> rect._width
10

Если ΠΆΠ΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ начинаСтся с Π΄Π²ΡƒΡ… ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠΈΠ²Π°Π½ΠΈΠΉ, Ρ‚ΠΎ Ρ‚ΡƒΡ‚ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π²Ρ‹ ΠΊ Π½Π΅ΠΌΡƒ ΡƒΠΆΠ΅ Π½Π΅ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ΡΡŒ (простым ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ). ΠœΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅ΠΌ наш класс Rectangle:

class Rectangle:

Β Β Β Β def __init__(self, width, height):
Β Β Β Β Β Β Β Β self.__width = width
Β Β Β Β Β Β Β Β self.__height = height

Β Β Β Β def get_width(self):
Β Β Β Β Β Β Β Β return self.__width

Β Β Β Β def set_width(self, w):
Β Β Β Β Β Β Β Β self.__width = w

Β Β Β Β def get_height(self):
Β Β Β Β Β Β Β Β return self.__height

Β Β Β Β def set_height(self, h):
Β Β Β Β Β Β Β Β self.__height = h

Β Β Β Β def area(self):
Β Β Β Β Β Β Β Β return self.__width * self.__height

ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ __width Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ, Π½ΡƒΠΆΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π΅Ρ€Π΅Π· get_width():

>>> rect = Rectangle(10, 20)

>>> rect.__width
Traceback (most recent call last):
Β Β File "<stdin>", line 1, in <module>
AttributeError: 'Rectangle' object has no attribute '__width'

>>> rect.get_width()
10

Но Π½Π° самом Π΄Π΅Π»Π΅ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΌΠΎΠΆΠ½ΠΎ, просто этот Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ для внСшнСго использования носит Π½Π°Π·Π²Π°Π½ΠΈΠ΅: _Rectangle__width:

>>> rect._Rectangle__width
10

>>> rect._Rectangle__width = 20

>>> rect.get_width()
20

Бвойства

Бвойством называСтся Ρ‚Π°ΠΊΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ класса, Ρ€Π°Π±ΠΎΡ‚Π° с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΏΠΎΠ΄ΠΎΠ±Π½Π° Ρ€Π°Π±ΠΎΡ‚Π΅ с Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠΌ. Для объявлСния ΠΌΠ΅Ρ‚ΠΎΠ΄Π° свойством Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€ @property.

Π’Π°ΠΆΠ½Ρ‹ΠΌ прСимущСством Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ‡Π΅Ρ€Π΅Π· свойства являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ ΠΈΡ… Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌ.

Π‘Π΄Π΅Π»Π°Π΅ΠΌ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ класса Rectangle с использованиСм свойств:

class Rectangle:

Β Β Β Β def __init__(self, width, height):
Β Β Β Β Β Β Β Β self.__width = width
Β Β Β Β Β Β Β Β self.__height = height

Β Β Β Β @property
Β Β Β Β def width(self):
Β Β Β Β Β Β Β Β return self.__width

Β Β Β Β @width.setter
Β Β Β Β def width(self, w):
Β Β Β Β Β Β Β Β if w > 0:
Β Β Β Β Β Β Β Β Β Β Β Β self.__width = w
Β Β Β Β Β Β Β Β else:
Β Β Β Β Β Β Β Β Β Β Β Β raise ValueError

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

Β Β Β Β @height.setter
Β Β Β Β def height(self, h):
Β Β Β Β Β Β Β Β if h > 0:
Β Β Β Β Β Β Β Β Β Β Β Β self.__height = h
Β Β Β Β Β Β Β Β else:
Β Β Β Β Β Β Β Β Β Β Β Β raise ValueError

Β Β Β Β def area(self):
Β Β Β Β Β Β Β Β return self.__width * self.__height

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с width ΠΈ height ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Ρ‚ΠΎ ΠΎΠ½ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌΠΈ:

>>> rect = Rectangle(10, 20)

>>> rect.width
10

>>> rect.height
20

МоТно Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ, Π½ΠΎ ΠΈ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ значСния свойствам:

>>> rect.width = 50

>>> rect.width
50

>>> rect.height = 70

>>> rect.height
70

Если Π²Ρ‹ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΠ»ΠΈ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π² setter’ах этих свойств осущСствляСтся ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Ссли Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ мСньшС нуля, Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π±Ρ€ΠΎΡˆΠ΅Π½ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ValueError:

>>> rect.width = -10
Traceback (most recent call last):
Β Β File "<stdin>", line 1, in <module>
Β Β File "test.py", line 28, in width
Β Β Β Β raise ValueError
ValueError

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

Π’ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ наслСдования ΡƒΡ‡Π°ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ Π΄Π²Π° класса: класс Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ ΠΈ класс ΠΏΠΎΡ‚ΠΎΠΌΠΎΠΊ. ΠŸΡ€ΠΈ этом Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ мноТСствСнноС наслСдованиС, Π² этом случаС Ρƒ класса ΠΏΠΎΡ‚ΠΎΠΌΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ нСсколько Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ. НС всС языки программирования ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ мноТСствСнноС наслСдованиС, Π½ΠΎ Π² Python ΠΌΠΎΠΆΠ½ΠΎ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ всС классы Π² Python ΡΠ²Π»ΡΡŽΡ‚ΡΡ наслСдниками ΠΎΡ‚ object, явно этот Ρ„Π°ΠΊΡ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ.

БинтаксичСски созданиС класса с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ Π΅Π³ΠΎ родитСля выглядит Ρ‚Π°ΠΊ:

class имя_класса(имя_родитСля1, [имя_родитСля2,…, имя_родитСля_n])

ΠŸΠ΅Ρ€Π΅Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ наш ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π² Π½Π΅ΠΌ присутствовало наслСдованиС:

class Figure:

Β Β Β Β def __init__(self, color):
Β Β Β Β Β Β Β Β self.__color = color

Β Β Β Β @property
Β Β Β Β def color(self):
Β Β Β Β Β Β Β Β return self.__color

Β Β Β Β @color.setter
Β Β Β Β def color(self, c):
Β Β Β Β Β Β Β Β self.__color = c


class Rectangle(Figure):Β 

Β Β Β Β def __init__(self, width, height, color):
Β Β Β Β Β Β Β Β super().__init__(color)
Β Β Β Β Β Β Β Β self.__width = width
Β Β Β Β Β Β Β Β self.__height = height

Β Β Β Β @property
Β Β Β Β def width(self):
Β Β Β Β Β Β Β Β return self.__width

Β Β Β Β @width.setter
Β Β Β Β def width(self, w):
Β Β Β Β Β Β Β Β if w > 0:
Β Β Β Β Β Β Β Β Β Β Β Β self.__width = w
Β Β Β Β Β Β Β Β else:
Β Β Β Β Β Β Β Β Β Β Β Β raise ValueError

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

Β Β Β Β @height.setter
Β Β Β Β def height(self, h):
Β Β Β Β Β Β Β Β if h > 0:
Β Β Β Β Β Β Β Β Β Β Β Β self.__height = h
 Β Β Β Β Β Β Β else:
Β Β Β Β Β Β Β Β Β Β Β Β raise ValueErrorΒ 

Β Β Β Β def area(self):
Β Β Β Β Β Β Β Β return self.__width * self.__height

Π ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ классом являСтся Figure, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Ρ†Π²Π΅Ρ‚ Ρ„ΠΈΠ³ΡƒΡ€Ρ‹ ΠΈ прСдоставляСт Π΅Π³ΠΎ Ρ‡Π΅Ρ€Π΅Π· свойства. Rectangle – класс наслСдник ΠΎΡ‚ Figure. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π΅Π³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ __init__: Π² Π½Π΅ΠΌ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π΄Π΅Π»ΠΎΠΌ вызываСтся конструктор (хотя это Π½Π΅ совсСм Π²Π΅Ρ€Π½ΠΎ, Π½ΠΎ Π±ΡƒΠ΄Π΅ΠΌ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊ) Π΅Π³ΠΎ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса:

super().__init__(color)

super – это ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для обращСния ΠΊ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΌΡƒ классу.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° класса Rectangle ΠΏΠΎΠΌΠΈΠΌΠΎ ΡƒΠΆΠ΅ Π·Π½Π°ΠΊΠΎΠΌΡ‹Ρ… свойств width ΠΈ height появилось свойство color:

>>> rect = Rectangle(10, 20, "green")

>>> rect.width
10

>>> rect.height
20

>>> rect.color
'green'

>>> rect.color = "red"

>>> rect.color
'red'

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

Как ΡƒΠΆΠ΅ Π±Ρ‹Π»ΠΎ сказано Π²ΠΎ Π²Π²Π΅Π΄Π΅Π½ΠΈΠΈ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ООП ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ с ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ пСрСопрСдСлСния ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса Π² классС наслСдникС. ΠŸΡ€ΠΎΡ‰Π΅ всСго это Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅. Π”ΠΎΠ±Π°Π²ΠΈΠΌ Π² наш Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ класс ΠΌΠ΅Ρ‚ΠΎΠ΄ info(), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚ ΡΠ²ΠΎΠ΄Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΏΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ класса Figure ΠΈ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ этот ΠΌΠ΅Ρ‚ΠΎΠ΄ Π² классС Rectangle, Π΄ΠΎΠ±Π°Π²ΠΈΠΌΒ  Π² Π½Π΅Π³ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅:

class Figure:

 Β Β Β def __init__(self, color):
Β Β Β Β Β Β Β Β self.__color = color

Β Β Β Β @property
Β Β Β Β def color(self):
Β Β Β Β Β Β Β Β return self.__color

Β  Β Β @color.setter
Β Β Β Β def color(self, c):
Β Β Β Β Β Β Β Β self.__color = c

Β Β Β Β def info(self):
Β Β Β Β Β Β Β print("Figure")
Β Β Β Β Β Β Β print("Color: " + self.__color)


class Rectangle(Figure):

Β Β Β Β def __init__(self, width, height, color):
Β Β Β Β Β Β Β Β super().__init__(color)
Β Β Β Β Β Β Β Β self.__width = width
Β Β Β Β Β Β Β Β self.__height = height

Β Β Β Β @property
Β Β Β Β def width(self):
Β Β Β Β Β Β Β Β return self.__width

Β Β Β Β @width.setter
Β Β Β Β def width(self, w):
Β Β Β Β Β Β Β Β if w > 0:
Β Β Β Β Β Β Β Β Β Β Β Β self.__width = w
Β Β Β Β Β Β Β Β else:
Β Β Β Β Β Β Β Β Β Β Β Β raise ValueError

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

Β Β Β Β @height.setter
Β Β Β Β def height(self, h):
Β Β Β Β Β Β Β Β if h > 0:
Β Β Β Β Β Β Β Β Β Β Β Β self.__height = h
Β Β Β Β Β Β Β Β else:
Β Β Β Β Β Β Β Β Β Β Β Β raise ValueError

Β Β Β Β def info(self):
Β Β Β Β Β Β Β Β print("Rectangle")
Β Β Β Β Β Β Β Β print("Color: " + self.color)
Β Β Β Β Β Β Β Β print("Width: " + str(self.width))
Β Β Β Β Β Β Β Β print("Height: " + str(self.height))
Β Β Β Β Β Β Β Β print("Area: " + str(self.area()))

Β Β Β Β def area(self):
Β Β Β Β Β Β Β Β return self.__width * self.__height

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ, ΠΊΠ°ΠΊ это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚

>>> fig = Figure("orange")

>>> fig.info()
Figure
Color: orange

>>> rect = Rectangle(10, 20, "green")

>>> rect.info()
Rectangle
Color: green
Width: 10
Height: 20
Area: 200

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, класс наслСдник ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°ΡΡˆΠΈΡ€ΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» класса родитСля.

P.S.

Если Π²Π°ΠΌ интСрСсна Ρ‚Π΅ΠΌΠ° Π°Π½Π°Π»ΠΈΠ·Π° Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚ΠΎ ΠΌΡ‹ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ Pandas. На нашСм сайтС Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ Π²Π²ΠΎΠ΄Π½Ρ‹Π΅ ΡƒΡ€ΠΎΠΊΠΈ ΠΏΠΎ этой Ρ‚Π΅ΠΌΠ΅. ВсС ΡƒΡ€ΠΎΠΊΠΈ ΠΏΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ Pandas собраны Π² ΠΊΠ½ΠΈΠ³Π΅ β€œPandas. Π Π°Π±ΠΎΡ‚Π° с данными”.

<<< Python. Π£Ρ€ΠΎΠΊ 13. ΠœΠΎΠ΄ΡƒΠ»ΠΈ ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹Β  Β Python. Π£Ρ€ΠΎΠΊ 15. Π˜Ρ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹>>>

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 . ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ тСряСм ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„Π½ΠΎΠΉ элСгантности. Если ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ участников элСмСнта, ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΊΠ°Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ этого элСмСнта, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Π°Π²Ρ‚ΠΎΡ€ΠΎΠ² ΠΈΠ»ΠΈ участников .ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, Π΄ΠΎΠ±Π°Π²ΠΈΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄ GetContributors Π² класс LibraryItem , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ подклассы ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ. Π’ΠΎΠ³Π΄Π° ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Ρƒ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°ΡŽΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹; ΠΌΡ‹ абстрагировали ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ интСрфСйс:

ΠŸΡ€ΠΎΡΡ‚ΠΎ глядя Π½Π° эту Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡƒ классов, каТСтся, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π΄Π΅Π»Π°Π΅ΠΌ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π½Π΅ Ρ‚Π°ΠΊ. Он Π³Ρ€ΠΎΠΌΠΎΠ·Π΄ΠΊΠΈΠΉ ΠΈ Ρ…Ρ€ΡƒΠΏΠΊΠΈΠΉ. Он ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ всС, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ, Π½ΠΎ каТСтся, Ρ‡Ρ‚ΠΎ Π΅Π³ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ слоТно ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ Ρ€Π°ΡΡˆΠΈΡ€ΡΡ‚ΡŒ. Блишком ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΉ, ΠΈ слишком ΠΌΠ½ΠΎΠ³ΠΎ классов Π±ΡƒΠ΄ΡƒΡ‚ Π·Π°Ρ‚Ρ€ΠΎΠ½ΡƒΡ‚Ρ‹ модификациями любого ΠΎΠ΄Π½ΠΎΠ³ΠΎ класса.ΠŸΠΎΡ…ΠΎΠΆΠ΅ Π½Π° спагСтти ΠΈ Ρ‚Π΅Ρ„Ρ‚Π΅Π»ΠΈ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ ΠΈΠ·ΡƒΡ‡ΠΈΠ»ΠΈ наслСдованиС ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΈ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΎ ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΊ нашСй ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ΅ Π½Π° основС ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ, Π³Π΄Π΅ Contributor Π±Ρ‹Π» присоСдинСн нСпосрСдствСнно ΠΊ LibraryItem . ΠŸΠΎΡ€Π°Π·ΠΌΡ‹ΡΠ»ΠΈΠ², ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½Π° самом Π΄Π΅Π»Π΅ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ ΠΊ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½ΠΎΠ²ΠΎΠΌΡƒ классу, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ‚ΠΈΠΏ участника. Π­Ρ‚ΠΎ Π²Π°ΠΆΠ½Ρ‹ΠΉ шаг Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ Π΄ΠΈΠ·Π°ΠΉΠ½Π΅. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ добавляСм класс ΠΊ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², вмСсто модСлирования ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ части Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Ρ… Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ.ΠœΡ‹ Ρ€Π΅ΠΎΡ€Π³Π°Π½ΠΈΠ·ΡƒΠ΅ΠΌ Π΄ΠΈΠ·Π°ΠΉΠ½, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π² систСмС, Π° Π½Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ ΠΆΠΈΠ·Π½ΠΈ. Π Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³ — Π²Π°ΠΆΠ½Ρ‹ΠΉ процСсс ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠ»ΠΈ Π΄ΠΈΠ·Π°ΠΉΠ½Π°. ЦСлью Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³Π° являСтся ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠ΅ Π΄ΠΈΠ·Π°ΠΉΠ½Π° ΠΏΡƒΡ‚Π΅ΠΌ пСрСмСщСния ΠΊΠΎΠ΄Π°, удалСния Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΈΠ»ΠΈ слоТных взаимосвязСй Π² ΠΏΠΎΠ»ΡŒΠ·Ρƒ Π±ΠΎΠ»Π΅Π΅ простых ΠΈ элСгантных Π΄ΠΈΠ·Π°ΠΉΠ½ΠΎΠ².

Π­Ρ‚ΠΎΡ‚ Π½ΠΎΠ²Ρ‹ΠΉ класс состоит ΠΈΠ· Contributor ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰Π΅Π³ΠΎ Ρ‚ΠΈΠΏ Π²ΠΊΠ»Π°Π΄Π° Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ° Π² Π΄Π°Π½Π½Ρ‹ΠΉ LibraryItem .Π’Π°ΠΊΠΈΡ… Π²ΠΊΠ»Π°Π΄ΠΎΠ² Π² ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ LibraryItem ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ, ΠΈ ΠΎΠ΄ΠΈΠ½ участник ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ Π²Π½ΠΎΡΠΈΡ‚ΡŒ Π²ΠΊΠ»Π°Π΄ Π² Ρ€Π°Π·Π½Ρ‹Π΅ элСмСнты. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ эту ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ:

Π‘Π½Π°Ρ‡Π°Π»Π° это ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ выглядит ΠΌΠ΅Π½Π΅Π΅ СстСствСнным, Ρ‡Π΅ΠΌ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ Π½Π° основС наслСдования. Однако Ρƒ Π½Π΅Π³ΠΎ Π΅ΡΡ‚ΡŒ Ρ‚ΠΎ прСимущСство, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π²ΠΊΠ»Π°Π΄ΠΎΠ² Π±Π΅Π· добавлСния Π½ΠΎΠ²ΠΎΠ³ΠΎ класса Π² Π΄ΠΈΠ·Π°ΠΉΠ½. НаслСдованиС Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, ΠΊΠΎΠ³Π΄Π° подклассы ΠΈΠΌΠ΅ΡŽΡ‚ ΠΊΠ°ΠΊΡƒΡŽ-Ρ‚ΠΎ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ .БпСциализация — это созданиС ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² ΠΈΠ»ΠΈ повСдСния подкласса, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ Ρ‡Π΅ΠΌ-Ρ‚ΠΎ отличался ΠΎΡ‚ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса. ΠšΠ°ΠΆΠ΅Ρ‚ΡΡ Π³Π»ΡƒΠΏΡ‹ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΊΡƒΡ‡Ρƒ пустых классов ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ для ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² (Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ ΠΌΠ΅Π½Π΅Π΅ распространСно срСди Java ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… программистов, всС являСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ , Π½ΠΎ это распространСно срСди Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€Π°Π³ΠΌΠ°Ρ‚ΠΈΡ‡Π½Ρ‹Ρ… Π΄ΠΈΠ·Π°ΠΉΠ½Π΅Ρ€ΠΎΠ² Python). Если ΠΌΡ‹ посмотрим Π½Π° Π²Π΅Ρ€ΡΠΈΡŽ наслСдования Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡ‹, ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ Π³Ρ€ΡƒΠΏΠΏΡƒ подклассов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π° самом Π΄Π΅Π»Π΅ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°ΡŽΡ‚:

Иногда Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° Π½Π΅ слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹.Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠΎΠ³Π΄Π° Π½Π΅ слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ наслСдованиС, являСтся Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ΠΌ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ — это просто инструмСнты, Π° Π½Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π°.

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

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

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

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

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

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

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

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

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

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

ООП на Python

Π₯отя ΠΌΡ‹ Π½Π΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈ ΠΎ классах ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ ΠΎΡ€ΠΈΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… Π³Π»Π°Π²Π°Ρ…, ΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ с классами всС врСмя. ЀактичСски, Π² Python всС являСтся классом. Π“Π²ΠΈΠ΄ΠΎ Π²Π°Π½ Россум Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π» язык ΠΏΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ «всС пСрвоклассно». Он писал: «Одной ΠΈΠ· ΠΌΠΎΠΈΡ… Ρ†Π΅Π»Π΅ΠΉ Π² Python Π±Ρ‹Π»ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ всС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π±Ρ‹Π»ΠΈΒ« пСрвоклассными Β».«Под этим я ΠΈΠΌΠ΅Π» Π² Π²ΠΈΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‚Π΅Π», Ρ‡Ρ‚ΠΎΠ±Ρ‹ всС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ имя Π½Π° языкС (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ†Π΅Π»Ρ‹Π΅ числа, строки, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, классы, ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ Ρ‚. Π”.), ИмСли ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΉ статус. Π’ΠΎ Π΅ΡΡ‚ΡŒ, ΠΎΠ½ΠΈ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹Ρ‚ΡŒ Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½Π½Ρ‹Π΅ Π² списки, сохранСнныС Π² словарях, ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Π΅ ΠΊΠ°ΠΊ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΈ Ρ‚. Π΄. » (Π‘Π»ΠΎΠ³, Π˜ΡΡ‚ΠΎΡ€ΠΈΡ Python, 27 фСвраля 2009 Π³.) Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, «всС» обрабатываСтся ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ, всС являСтся классом: Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ значСниями, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΆΠ΅, ΠΊΠ°ΠΊ списки, Ρ†Π΅Π»Ρ‹Π΅ числа ΠΈΠ»ΠΈ числа с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ… являСтся экзСмплярами своих ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… классов.

ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования Π½Π° Python | Набор 1 (класс, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈ Ρ‡Π»Π΅Π½Ρ‹)

НиТС прСдставлСна ​​простая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Python, которая создаСт класс с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°.

Python

класс ВСст:

def 902 902 9011 9011 902 ( "ΠŸΡ€ΠΈΠ²Π΅Ρ‚" )

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

902 имя:

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ опрСдСляСм ΠΌΠ΅Ρ‚ΠΎΠ΄ __init__ ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΠΉ имя ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° (вмСстС с ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ self). .

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ класса ΠΈ экзСмпляра (ΠΈΠ»ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹)
Π’ Python ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ экзСмпляра — это ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… присваиваСтся Π²Π½ΡƒΡ‚Ρ€ΠΈ конструктора ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ self.
ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ класса — это ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… присваиваСтся Π² классС.

Python

класс ЧСловСк:

def __init __10 902 .name = name

def say_hi ( self ):

print это ‘ , self .имя)

p = Π§Π΅Π»ΠΎΠ²Π΅ΠΊ ( 'Shwetanshu' )

p.say_hi ()

класс CSS студСнт:

def __init __ ( self , roll):

self .Ρ€ΡƒΠ»ΠΎΠ½ = Ρ€ΡƒΠ»ΠΎΠ½

a = CSStudent ( 101 )

b 2 2

ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ (a.stream)

print (b.stream)

ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ (a.roll)

3

11 3 .stream)

ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ экзСмпляра Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ².

Python

класс CSStudent:

def __init __ ( self , roll):

self. self.roll = roll

def setAddress ( self , адрСс):

адрСс 902

def getAddress ( self ):

Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ self. self.адрСс

a = CSStudent ( 101 )

a.setAddress ( "Noida, UP" ) ())

Π’Ρ‹Π²ΠΎΠ΄:

 Noida, UP 


Как ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ пустой класс?
ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ пустой класс, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ pass Π² Python.

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Python | Набор 2 (Π‘ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²)

-xa0
Автор ΡΡ‚Π°Ρ‚ΡŒΠΈ Shwetanshu Rohatgi .ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, Π½Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ, Ссли Π²Ρ‹ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚Π΅ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅, ΠΈΠ»ΠΈ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅, обсуТдСнной Π²Ρ‹ΡˆΠ΅

Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρ‰ΠΈΠΊ! Π£ΠΊΡ€Π΅ΠΏΠΈΡ‚Π΅ свои основы с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ курса Python Programming Foundation ΠΈ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚Π΅ основы.

Для Π½Π°Ρ‡Π°Π»Π° ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΡŒΡ‚Π΅ΡΡŒ ΠΊ собСсСдованию. Π Π°ΡΡˆΠΈΡ€ΡŒΡ‚Π΅ свои ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ структур Π΄Π°Π½Π½Ρ‹Ρ… с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ курса Python DS . И Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°Ρ‡Π°Ρ‚ΡŒ своС ΠΏΡƒΡ‚Π΅ΡˆΠ΅ΡΡ‚Π²ΠΈΠ΅ ΠΏΠΎ ΠΌΠ°ΡˆΠΈΠ½Π½ΠΎΠΌΡƒ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΡŽ, ΠΏΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΠΉΡ‚Π΅ΡΡŒ ΠΊ МашинноС ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ — курс Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ уровня


PacktPublishing / Python-3-Object-Oriented-Programming-Third-Edition: Python 3 Object-Oriented Programming — Third Edition, ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠŸΠ°ΠΊΠ΅Ρ‚

Π­Ρ‚ΠΎ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΊΠΎΠ΄Π° для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования Python 3 — Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅, ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Packt.

Π‘ΠΎΠ·Π΄Π°Π²Π°ΠΉΡ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠ΅ ΠΈ ΡƒΠ΄ΠΎΠ±Π½ΠΎΠ΅ Π² обслуТивании ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… шаблонов проСктирования Π½Π° Python 3.8

О Ρ‡Π΅ΠΌ эта ΠΊΠ½ΠΈΠ³Π°?

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ (ООП) — это популярная ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠ° проСктирования, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ вмСстС. Π­Ρ‚ΠΎ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ Python 3 Object-Oriented Programming ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ классы, ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡŽ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ с Π°ΠΊΡ†Π΅Π½Ρ‚ΠΎΠΌ Π½Π° Ρ‚ΠΎ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Ρ…ΠΎΡ€ΠΎΡˆΠΎ спроСктированного ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния.

Π’ этой ΠΊΠ½ΠΈΠ³Π΅ описаны ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ интСрСсныС особСнности:

  • РСализация ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π² Python ΠΏΡƒΡ‚Π΅ΠΌ создания классов ΠΈ опрСдСлСния ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²
  • РаспространСнныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ° ΠΈ ΠΏΠΎΠ΄Π²ΠΎΠ΄Π½Ρ‹Π΅ ΠΊΠ°ΠΌΠ½ΠΈ Π² Python 3
  • Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ класса с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ наслСдования
  • ΠŸΠΎΠΉΠΌΠΈΡ‚Π΅, ΠΊΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ, Ρ‡Ρ‚ΠΎ Π±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½ΠΎ, ΠΊΠΎΠ³Π΄Π° ΠΈΡ… Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ
  • Π£Π·Π½Π°ΠΉΡ‚Π΅, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ проСктирования ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΎΠ½ΠΈ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ Π² Python
  • ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ для сСбя простоту ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠ³ΠΎ тСстирования ΠΈ ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚Π΅, ΠΏΠΎΡ‡Π΅ΠΌΡƒ это Ρ‚Π°ΠΊ Π²Π°ΠΆΠ½ΠΎ Π² Python
  • Π˜Π·ΡƒΡ‡ΠΈΡ‚Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ с asyncio

Если Π²Ρ‹ чувствуСтС, Ρ‡Ρ‚ΠΎ эта ΠΊΠ½ΠΈΠ³Π° для вас, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ свой экзСмпляр сСгодня ΠΆΠ΅!

Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΠΈ ΠΈ навигация

Π’Π΅ΡΡŒ ΠΊΠΎΠ΄ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½ Π² ΠΏΠ°ΠΏΠΊΠΈ.НапримСр, Chapter02.

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

  класс Point:
    def __init __ (self, x = 0, y = 0):
        self.move (Ρ…, Ρƒ)
  

Для этой ΠΊΠ½ΠΈΠ³ΠΈ Π²Π°ΠΌ понадобится ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅: Если Π²Ρ‹ Π½ΠΎΠ²ΠΈΡ‡ΠΎΠΊ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования ΠΈΠ»ΠΈ Ρƒ вас Π΅ΡΡ‚ΡŒ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ Π½Π°Π²Ρ‹ΠΊΠΈ Python ΠΈ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊ ΠΈ ΠΊΠΎΠ³Π΄Π° ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ООП Π² Python, эта ΠΊΠ½ΠΈΠ³Π° для вас. Если Π²Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ программист для Π΄Ρ€ΡƒΠ³ΠΈΡ… языков ΠΈΠ»ΠΈ ΠΈΡ‰Π΅Ρ‚Π΅ ΠΎΠΏΠΎΡ€Ρƒ Π² Π½ΠΎΠ²ΠΎΠΌ ΠΌΠΈΡ€Π΅ Python 3.8, Π²Ρ‹ Ρ‚ΠΎΠΆΠ΅ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ эту ΠΊΠ½ΠΈΠ³Ρƒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ Π² Python. ΠŸΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ ΠΎΠΏΡ‹Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Python 3 Π½Π΅ трСбуСтся.

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ списка ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΈ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ обСспСчСния Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ всС Ρ„Π°ΠΉΠ»Ρ‹ ΠΊΠΎΠ΄Π°, прСдставлСнныС Π² ΠΊΠ½ΠΈΠ³Π΅ (Π“Π»Π°Π²Π° 1-13).

Бписок ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΈ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ обСспСчСния

Π“Π»Π°Π²Π° ВрСбуСтся ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС ВрСбуСтся ОБ
2-13 Python 3.5.2 ΠΈ Π²Ρ‹ΡˆΠ΅ Windows, Mac OS X ΠΈ Linux (любая)

Π‘ΠΎΠΏΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Ρ‚ΠΎΠ²Π°Ρ€Ρ‹

ΠŸΠΎΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с Π°Π²Ρ‚ΠΎΡ€ΠΎΠΌ

Дасти Ѐиллипс Канадский Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния ΠΈ Π°Π²Ρ‚ΠΎΡ€, Π² настоящСС врСмя ΠΏΡ€ΠΎΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ Π² Нью-БрансуикС.Он Π±Ρ‹Π» Π°ΠΊΡ‚ΠΈΠ²Π΅Π½ Π² сообщСствС ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠ³ΠΎ исходного ΠΊΠΎΠ΄Π° Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π΄Π²ΡƒΡ… дСсятилСтий ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π» Π½Π° Python ΠΏΠΎΡ‡Ρ‚ΠΈ ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΆΠ΅. Он ΠΈΠΌΠ΅Π΅Ρ‚ ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ магистра ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Ρ… Π½Π°ΡƒΠΊ ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π» Π² Facebook, ООН ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… стартапах. Π’ настоящСС врСмя ΠΎΠ½ ΠΈΠ·ΡƒΡ‡Π°Π΅Ρ‚ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΡŽ сохранСния ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π½Π° сайтС beanstalk.network.

Python 3 Β«ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅Β» Π±Ρ‹Π»ΠΎ Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΎΠΉ. Он Ρ‚Π°ΠΊΠΆΠ΅ написал Β«Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² Киви» ΠΈ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π» Β«Hacking HappyΒ» — ΠΏΡƒΡ‚Π΅ΡˆΠ΅ΡΡ‚Π²ΠΈΠ΅ ΠΊ психичСскому Π±Π»Π°Π³ΠΎΠΏΠΎΠ»ΡƒΡ‡ΠΈΡŽ для тСхничСски ΠΏΠΎΠ΄ΠΊΠΎΠ²Π°Π½Π½Ρ‹Ρ… людСй.Π‘ΠΊΠΎΡ€ΠΎ появится ΠΈ худоТСствСнная Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Π°, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ слСдитС Π·Π° обновлСниями!

Π”Ρ€ΡƒΠ³ΠΈΠ΅ ΠΊΠ½ΠΈΠ³ΠΈ Π°Π²Ρ‚ΠΎΡ€Π°

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

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

ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ ΠΎΡ‚Π·Ρ‹Π²Ρ‹

Π©Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ здСсь, Ссли Ρƒ вас Π΅ΡΡ‚ΡŒ ΠΎΡ‚Π·Ρ‹Π²Ρ‹ ΠΈΠ»ΠΈ прСдлоТСния.

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

Π­Ρ‚ΠΎ руководство описываСт ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ (ООП) Π½Π° Python с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ. Π­Ρ‚ΠΎ пошаговоС руководство, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠ΅ для людСй, Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ… ΠΎΠΏΡ‹Ρ‚Π° программирования.ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ популярно ΠΈ доступно Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… языках программирования, ΠΏΠΎΠΌΠΈΠΌΠΎ Python, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Java, C ++, PHP.

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

Π’ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ (ООП) Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π³ΠΈΠ±ΠΊΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π² своСм ΠΊΠΎΠ΄Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΌΠΈΡ€Π°, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ, ΠΆΠΈΠ²ΠΎΡ‚Π½ΠΎΠ΅, Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ, Π±Π°Π½ΠΊΠΎΠΌΠ°Ρ‚ ΠΈ Ρ‚. Π”. ΠŸΡ€ΠΎΡ‰Π΅ говоря, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ — это Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ характСристиками ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. НапримСр, Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ являСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠ°ΠΊ запуск, остановка, Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Ρ‚ΠΎΡ€ΠΌΠΎΠΆΠ΅Π½ΠΈΠ΅.Π­Ρ‚ΠΎ функция автомобиля. А характСристики — это Ρ†Π²Π΅Ρ‚ автомобиля, ΠΏΡ€ΠΎΠ±Π΅Π³, максимальная ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ, Π³ΠΎΠ΄ выпуска ΠΈ Ρ‚. Π”.

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ — это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ . Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ Π² ΠΌΠΈΡ€Π΅ ООП. Π₯арактСристики — это Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ (свойства) . ВСхничСски Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ — это ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈΠ»ΠΈ значСния, связанныС с состояниСм ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ — это Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π»ΠΈΡΡŽΡ‚ Π½Π° Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

Π’ Python всС являСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ.Π‘Ρ‚Ρ€ΠΎΠΊΠΈ, Ρ†Π΅Π»Ρ‹Π΅ числа, числа с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой, списки, словари, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΈ Ρ‚. Π”. — всС это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π»ΠΈ спСциалисты ΠΏΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅?

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

Π’ Python сущСствуСт Π² основном 3 стиля программирования: ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅. ΠŸΡ€ΠΎΡ‰Π΅ говоря, Π² Python Π΅ΡΡ‚ΡŒ 3 Ρ€Π°Π·Π½Ρ‹Ρ… способа Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹.Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ популярно срСди спСциалистов ΠΏΠΎ Π΄Π°Π½Π½Ρ‹ΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΎ Π΄Π°Π΅Ρ‚ прСимущСство Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. ООП ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ с большими ΠΊΠΎΠ΄ΠΎΠ²Ρ‹ΠΌΠΈ Π±Π°Π·Π°ΠΌΠΈ, ΠΈ ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ сопровоТдСния ΠΊΠΎΠ΄Π°.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅: Π₯ΠΎΡ€ΠΎΡˆΠΎ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ основы ООП, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ стоит Π·Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅. Если Π²Ρ‹ ΡΡ‚Ρ€Π΅ΠΌΠΈΡ‚Π΅ΡΡŒ ΡΡ‚Π°Ρ‚ΡŒ ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠΌ Python ΠΈ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Python, Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ ООП (ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ!). Π’ Ρ‚ΠΎ ΠΆΠ΅ врСмя Π΅ΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ спСциалистов ΠΏΠΎ Π΄Π°Π½Π½Ρ‹ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ Π·Π½Π°ΡŽΡ‚ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΉ ООП ΠΈ всС Π΅Ρ‰Π΅ ΠΏΡ€Π΅ΡƒΡΠΏΠ΅Π²Π°ΡŽΡ‚ Π² своСй Ρ€Π°Π±ΠΎΡ‚Π΅.

ΠžΡΠ½ΠΎΠ²Ρ‹: ООП Π² Python

Π’ этом Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΌΡ‹ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ рассмотрим ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ, связанныС с ООП Π² Python.

ΠžΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈ класс

Класс — это Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Π­Ρ‚ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ описаниС Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² класса. НапримСр, Π΄ΠΈΠ·Π°ΠΉΠ½ ΠΎΠ΄Π½ΠΎΡ‚ΠΈΠΏΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ — это класс. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ мноТСство ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈΠ· класса. Как Π±ΡƒΠ΄Ρ‚ΠΎ ΠΈΠ· конструкции автомобиля ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ мноТСство ΠΎΠ΄Π½ΠΎΡ‚ΠΈΠΏΠ½Ρ‹Ρ… Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»Π΅ΠΉ.

БущСствуСт мноТСство Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² классов, ΠΊΠ°ΠΊ описано Π½ΠΈΠΆΠ΅ —

  • Π Π΅Ρ†Π΅ΠΏΡ‚ ΠΎΠΌΠ»Π΅Ρ‚Π° класса.ΠžΠΌΠ»Π΅Ρ‚ — это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚.
  • Π’Π»Π°Π΄Π΅Π»Π΅Ρ† банковского счСта — это класс. Атрибуты: имя, фамилия, Π΄Π°Ρ‚Π° роТдСния, профСссия, адрСс ΠΈ Ρ‚. Π”. ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Β«Π‘ΠΌΠ΅Π½Π° адрСса», Β«Π‘ΠΌΠ΅Π½Π° профСссии», Β«Π‘ΠΌΠ΅Π½Π° Ρ„Π°ΠΌΠΈΠ»ΠΈΠΈΒ» ΠΈ Ρ‚. Π”. Β«Π‘ΠΌΠ΅Π½Π° Ρ„Π°ΠΌΠΈΠ»ΠΈΠΈΒ» ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΠ° ΠΊ ΠΆΠ΅Π½Ρ‰ΠΈΠ½Ρ‹, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ ΠΌΠ΅Π½ΡΡŽΡ‚ Ρ„Π°ΠΌΠΈΠ»ΠΈΡŽ послС замуТСства
  • Π‘ΠΎΠ±Π°ΠΊΠ° класс. Атрибуты: ΠΏΠΎΡ€ΠΎΠ΄Π°, количСство Π½ΠΎΠ³, Ρ€Π°Π·ΠΌΠ΅Ρ€, возраст, окрас ΠΈ Ρ‚. Π”. ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹: Π΅ΡΡ‚ΡŒ, ΡΠΏΠ°Ρ‚ΡŒ, ΡΠΈΠ΄Π΅Ρ‚ΡŒ, Π»Π°ΡΡ‚ΡŒ, Π±Π΅Π³Π°Ρ‚ΡŒ ΠΈ Ρ‚. Π”.

Π’ python ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ класс, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово class .ΠœΠ΅Ρ‚ΠΎΠ΄ класса ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ словом def . Она ΠΏΠΎΡ…ΠΎΠΆΠ° Π½Π° ΠΎΠ±Ρ‹Ρ‡Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Π½ΠΎ опрСдСляСтся Π²Π½ΡƒΡ‚Ρ€ΠΈ класса ΠΈ являСтся Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ класса. ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° всСгда являСтся self , Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ вызываСтся Π±Π΅Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° self .

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 1: Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ класса автомобиля

  • класс : Π²Π°Π³ΠΎΠ½
  • Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ : Π³ΠΎΠ΄, миль Π½Π° Π³Π°Π»Π»ΠΎΠ½ ΠΈ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ
  • ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ : ускорСниС ΠΈ Ρ‚ΠΎΡ€ΠΌΠΎΠΆΠ΅Π½ΠΈΠ΅
  • ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ : Π²Π°Π³ΠΎΠ½1
Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ класса:
    
    # Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ²
        Π³ΠΎΠ΄ = 2016 # Π³ΠΎΠ΄ ΠΌΠΎΠ΄Π΅Π»ΠΈ автомобиля
        миль Π½Π° Π³Π°Π»Π»ΠΎΠ½ = 20 # ΠΏΡ€ΠΎΠ±Π΅Π³
        speed = 100 # тСкущая ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ
        
    # ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹
        def ускорСниС (self):
            Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΠΌΠ°ΡˆΠΈΠ½Ρƒ.ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ + 20

        def Ρ‚ΠΎΡ€ΠΌΠΎΠ· (сам):
            Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ Π²Π°Π³ΠΎΠ½Π°. ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ - 50
 
car1 = Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ ()

car1.accelerate ()
120

car1.brake ()
50

car1.year
2016 Π³.

car1.mpg
20

car1.speed
100
 
Для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ скруглСнныС скобки.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2: Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ класса ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ создаСм класс ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ company. Π—Π΄Π΅ΡΡŒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹: имя, ΠΎΠ±ΠΎΡ€ΠΎΡ‚, Π²Ρ‹Ρ€ΡƒΡ‡ΠΊΠ° ΠΈ количСство сотрудников, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… Π² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ. ΠœΠ΅Ρ‚ΠΎΠ΄ — это Π΄ΠΎΡ…ΠΎΠ΄, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ Π½Π° ΠΎΠ΄Π½ΠΎΠ³ΠΎ сотрудника (для дСмонстрации Π½Π°Π·ΠΎΠ²Π΅ΠΌ Π΅Π³ΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ , ).
# Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ класс Company
класс Компания:
    
    # Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ²
    name = "XYZ Bank"
    ΠΎΠ±ΠΎΡ€ΠΎΡ‚ = 5000
    Π΄ΠΎΡ…ΠΎΠ΄ = 1000
    no_of_employees = 100
    
    # ΠΌΠ΅Ρ‚ΠΎΠ΄
    def ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ (self):
        Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ Company.revenue / Company.no_of_employees
 

Атрибуты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Π²Π½Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½Ρ‹ Π±Π΅Π· создания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

НазваниС компании

  Π’Ρ‹Ρ…ΠΎΠ΄ 
Β«XYZ BankΒ»

Компания. ΠžΠ±ΠΎΡ€ΠΎΡ‚

  Π’Ρ‹Ρ…ΠΎΠ΄ 
5000

Company.no_of_employees

  Π’Ρ‹Ρ…ΠΎΠ΄ 
100

Компания().ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ()

  Π’Ρ‹Ρ…ΠΎΠ΄ 
10.0
 

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

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

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ — это экзСмпляры класса. Π‘Π»ΠΎΠ²Π° «экзСмпляр» ΠΈ Β«ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Β» взаимозамСняСмы. ΠŸΡ€ΠΎΡ†Π΅ΡΡ создания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° класса называСтся экзСмпляром .

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

классный Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ:
        def __init __ (я, имя, фамилия):
            сСбя.first = имя
            self.last = фамилия

myname = person ("Π”ΠΈΠΏΠ°Π½ΡˆΡƒ", "Π‘Ρ…Π°Π»Π»Π°")
ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ (myname.last)
 
ΠœΡ‹ создали ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ myname класса person.
 Когда Π²Ρ‹ создаСтС Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ >>> вызываСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ __init__ >>> ПовСдСниС Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°__init__ выполняСтся 

Π’ΠΎΠ·ΡŒΠΌΠ΅ΠΌ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€. Π—Π΄Π΅ΡΡŒ привСдСнная Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π²Ρ‹Π²ΠΎΠ΄ Π½Π° основС ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π² классС

.
класс MyCompany:
        
    # ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹
    def __init __ (собствСнноС имя, имя ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, Π΄ΠΎΡ…ΠΎΠ΄, Ρ€Π°Π·ΠΌΠ΅Ρ€ сотрудника):
        сСбя.name = compname
        self.revenue = Π΄ΠΎΡ…ΠΎΠ΄
        self.no_of_employees = Ρ€Π°Π·ΠΌΠ΅Ρ€ сотрудников

    def ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ (self):
        Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ self.revenue / self.no_of_employees

MyCompany ('XYZ Bank', 1000,100) .productivity ()

  Π’Ρ‹Ρ…ΠΎΠ΄ 
10.0

MyCompany ('ABC Bank', 5000,200) .productivity ()

  Π’Ρ‹Ρ…ΠΎΠ΄ 
25,0

 

ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ способ Π²Ρ‹Π·ΠΎΠ²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° класса

Π‘Π°Π½ΠΊ = MyCompany ('ABC Bank', 5000,200)
MyCompany.productivity (Π‘Π°Π½ΠΊ)
 

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅

Атрибуты класса Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ.Π•ΡΡ‚ΡŒ Π΄Π²Π° Ρ‚ΠΈΠΏΠ° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…: ΠΎΠ΄Π½Π° объявлСна ​​внутри класса, Π½ΠΎ Π²Π½Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² класса, Π° другая объявлСна ​​внутри __init__ .

Когда Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ __int__, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послС создания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Π­Ρ‚ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ экзСмпляра , ΠΈΠ»ΠΈ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ. Π’Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Π²Π½Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ класса , ΠΈΠ»ΠΈ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ этим ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ Π² любом мСстС класса. Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π½ΠΈΠΆΠ΅.

класс MyCompany:
    #Class Variable
    рост = 0,1
            
    def __init __ (собствСнноС имя, имя ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, Π΄ΠΎΡ…ΠΎΠ΄, Ρ€Π°Π·ΠΌΠ΅Ρ€ сотрудника):
        #Instance Variables
        self.name = compname
        self.revenue = Π΄ΠΎΡ…ΠΎΠ΄
        self.no_of_employees = Ρ€Π°Π·ΠΌΠ΅Ρ€ сотрудников

MyCompany.growth
  0,1 
 

Как ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Π΄ΠΎΡ…ΠΎΠ΄Π° ΠΈΠ· класса MyCompany?

ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ
MyCompany.revenue
 
AttributeError: ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚ΠΈΠΏΠ° «MyCompany» Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° «Π΄ΠΎΡ…ΠΎΠ΄» ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ способ
Π‘Π°Π½ΠΊ = MyCompany ('DBA Bank', 50000, 1000)
Π‘Π°Π½ΠΊ.Π΄ΠΎΡ…ΠΎΠ΄
 
50000 MyCompany.revenue Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΊ Π½Π΅ΠΌΡƒ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π½Π΅ Π±Ρ‹Π» создан.

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

Π’ python Π΅ΡΡ‚ΡŒ Ρ‚Ρ€ΠΈ Ρ‚ΠΈΠΏΠ° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²: Instance, Class ΠΈ Static.
  • ЭкзСмпляр ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ self Π² качСствС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°. Π˜Ρ… Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ ΠΈΠ»ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ . Π­Ρ‚ΠΎ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ ΠΈΠ·ΡƒΡ‡ΠΈΠ»ΠΈ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… Ρ€Π°Π·Π΄Π΅Π»Π°Ρ….
  • Класс ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ cls Π² качСствС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°. cls относится ΠΊ классу. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ класса Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅, ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€ @classmethod ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ класс ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ
  • .
  • БтатичСский Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π² качСствС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°. Он ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠ΅ использованиС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ΡΡ Π² послСднСй части этой ΡΡ‚Π°Ρ‚ΡŒΠΈ.

Π§Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ экзСмпляра ΠΈ класса?

ΠœΠ΅Ρ‚ΠΎΠ΄ экзСмпляра ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ свойствам, ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈΠ»ΠΈ экзСмпляра. Π’ Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄ класса ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ свойству класса, Π° Π½Π΅ ΠΊ свойству ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ экзСмпляра этого класса.Π”Ρ€ΡƒΠ³ΠΎΠ΅ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ Π² стилС написания состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ Instance ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ self Π² качСствС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄ Class ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ cls Π² качСствС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°.

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ создаСм класс для cab . И такси, ΠΈ такси ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅. Атрибуты ΠΈΠ»ΠΈ свойства ΠΊΠ°Π±ΠΈΠ½Ρ‹ — это имя водитСля, количСство ΠΊΠΈΠ»ΠΎΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΏΡ€ΠΎΠ±Π΅Π³Π°, мСсто посадки ΠΈ высадки, ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ΅Π·Π΄Π° ΠΈ количСство пассаТиров, находящихся Π² ΠΊΠ°Π±ΠΈΠ½Π΅.

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ создаСм 3 ΠΌΠ΅Ρ‚ΠΎΠ΄Π°: rateperkm , noofcabs , avgnoofpassengers .ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ — это ΠΌΠ΅Ρ‚ΠΎΠ΄ экзСмпляра, Π° Π΄Π²Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… — ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса.

  • rateperkm Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ΅Π·Π΄Π° Π² такси Π·Π° ΠΊΠΌ, которая рассчитываСтся ΠΏΡƒΡ‚Π΅ΠΌ дСлСния ΠΎΠ±Ρ‰Π΅ΠΉ суммы счСта Π½Π° количСство. ΠΊΠΌ такси ΠΏΡ€ΠΎΠ΅Ρ…Π°Π»ΠΈ.
  • noofcabs Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ количСство Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… ΠΊΠ°Π±ΠΈΠ½. ΠŸΠΎΠ΄ΡƒΠΌΠ°ΠΉΡ‚Π΅ ΠΎΠ± агСнтствС такси, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²Π»Π°Π΄Π΅Π΅Ρ‚ большим количСством такси ΠΈ Ρ…ΠΎΡ‡Π΅Ρ‚ Π·Π½Π°Ρ‚ΡŒ, сколько такси занято
  • avgnoofpassengers Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ срСднСС количСство пассаТиров, ΠΏΡƒΡ‚Π΅ΡˆΠ΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π² Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»Π΅. Для расчСта срСднСго значСния ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ всС Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠ΅ ΠΊΠ°Π±ΠΈΠ½Ρ‹ ΠΈ количСство пассаТиров Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠ°Π±ΠΈΠ½Π΅.
класс Cab:
    
    # Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ для ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ
    numberofcabs = 0
    numpassengers = 0

    def __init __ (я, Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ, ΠΊΠΌ, мСста, ΠΎΠΏΠ»Π°Ρ‚Π°, пассаТиры):
        self.driver = Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€
        self.running = кмс
        self.places = мСста
        self.bill = ΠΏΠ»Π°Ρ‚ΠΈΡ‚ΡŒ
        Cab.numberofcabs = Cab.numberofcabs + 1
        Cab.numpassengers = Cab.numpassengers + пассаТиры

    # Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ стоимости ΠΏΡ€ΠΎΠ΅Π·Π΄Π° Π² такси Π·Π° ΠΊΠΌ
    def rateperkm (self):
        Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ self.bill / self.running
        
    # Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ количСство Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Ρ… ΠΊΠ°Π±ΠΈΠ½
    @classmethod
    def noofcabs (cls):
        Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ cls.количСство ΠΊΠ°Π±ΠΈΠ½

    # Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ срСднСС количСство пассаТиров, ΠΏΡƒΡ‚Π΅ΡˆΠ΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π² ΠΊΠ°Π±ΠΈΠ½Π΅.
    @classmethod
    def avgnoofpassengers (cls):
        Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ int (cls.numpassengers / cls.numberofcabs)

firstcab = Cab ("РамСш", 80, ['Π”Π΅Π»ΠΈ', 'Нойда'], 2200, 3)
secondcab = Cab ("Π‘ΡƒΡ€Π΅Ρˆ", 60, ['Π“ΡƒΡ€Π³Π°ΠΎΠ½', 'Нойда'], 1500, 1)
thirdcab = Cab ("Дэйв", 20, ['Π“ΡƒΡ€Π³Π°ΠΎΠ½', 'Нойда'], 680, 2)

firstcab.driver
  'РамСш'
 
secondcab.driver
  'Π‘ΡƒΡ€Π΅Ρˆ'
 
Ρ‚Ρ€Π΅Ρ‚ΡŒΡ ΠΊΠ°Π±ΠΈΠ½Π°. Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ
  'Дэйв'
  
пСрвая ΠΊΠ°Π±ΠΈΠ½Π°.rateperkm ()
  27,5 

secondcab.rateperkm ()
  25,0 

thirdcab.rateperkm ()
  34,0 
 
Cab.noofcabs ()
  3
 

Cab.avgnoofpassengers ()
  2
  
Cab.avgnoofpassengers () Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ 2, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ вычисляСтся ΠΏΠΎ Ρ„ΠΎΡ€ΠΌΡƒΠ»Π΅ (3 + 1 + 2) / 3

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

БтатичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ — Π½Π°ΠΈΠΌΠ΅Π½Π΅Π΅ популярный ΠΈΠ· всСх Ρ‚Ρ€Π΅Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ². Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² экзСмпляра ΠΈ класса, статичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово (self, cls) Π² качСствС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°.Он ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠ΅ использованиС, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π²Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ свойствам экзСмпляра (ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°) класса, Π˜Π›Π˜ Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌ класса. ЕдинствСнноС использованиС — это ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Π±Π΅Π· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Π’ основном это ΠΏΠΎΠ»Π΅Π·Π½ΠΎ для создания Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΈΠ»ΠΈ слуТСбных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΈΠΌΠ΅Π½ΠΈ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° (имя Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ мСньшС 32 символов) ΠΈΠ»ΠΈ сумма счСта Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ большС нуля (Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ»ΠΈ Π½ΡƒΠ»Π΅Π²ΠΎΠΉ). Π‘ΠΌ. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½ΠΈΠΆΠ΅ для Ρ‚ΠΎΠΉ ΠΆΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ.
класс Cab:
    
    @staticmethod
    def billvalidation (ΠΎΠΏΠ»Π°Ρ‚Π°):
        return int (ΠΎΠΏΠ»Π°Ρ‚Π°)> 0

Вакси.биллвалидация (0,2)

  Π’Ρ‹Ρ…ΠΎΠ΄ 
Π›ΠΎΠΆΡŒ
 

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

НаслСдованиС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΊΠΎΠ΄ для класса Children , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΆΠ΅ Π±Ρ‹Π» написан для класса Parent . НапримСр, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ класса транспортного срСдства Ρ‚Π°ΠΊΠΈΠ΅ ΠΆΠ΅, ΠΊΠ°ΠΊ класс автомобиля, автобуса ΠΈ Π³Ρ€ΡƒΠ·ΠΎΠ²ΠΈΠΊΠ°. Атрибуты ΠΈΠΌΠ΅Π½ΠΈ водитСля, количСства колСс ΠΈ Ρ‚. Π”. ΠžΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ для всСх классов. ΠΠ²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ — это Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ класс , Π° ΠΠ²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ, автобус ΠΈ Π³Ρ€ΡƒΠ·ΠΎΠ²ΠΈΠΊ — это Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ классы . Π’ ООО это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ класс наслСдуСт Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ повСдСния ΠΎΡ‚ своСго Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса.
  • Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ класс ВранспортноС срСдство ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π΅Π³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ для Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅Π³ΠΎ класса ВранспортноС срСдство . Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π½Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ класса cab. Он унаслСдован ΠΎΡ‚ автомобиля.
класс ΠΠ²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ:
    def __init __ (я, Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ, колСса, сидСнья):
        self.driver = Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€
        self.noofwheels = колСса
        self.noofseats = мСста

класс Cab (ΠΠ²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ):
    ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ

cab_1 = Cab ('Бэнди', 4, 2)
cab_1.driver

  Π’Ρ‹Ρ…ΠΎΠ΄ 
'Бэнди'
 
  • Как ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ класса подкласса ΠΠ²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ
  • класс ΠΠ²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ:
        минимальная ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ = 50
        def __init __ (я, Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ, колСса, сидСнья):
            сСбя.driver = Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ
            self.noofwheels = колСса
            self.noofseats = мСста
    
    класс Cab (ΠΠ²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ):
        минимальная ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ = 75
    
    ΠΠ²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ. Минимальная
      50 
    
    Кабина минимальная
      75 
     
  • Как ΠΈΠΌΠ΅Ρ‚ΡŒ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ класс с большим количСством ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², Ρ‡Π΅ΠΌ наш Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ класс
  • Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρƒ нас Π΅ΡΡ‚ΡŒ Π΄Π²Π° класса Cab ΠΈ Bus , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡ…ΠΎΠΆΠΈΡ… Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ², Π½ΠΎ Π΅ΡΡ‚ΡŒ нСсколько ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… для класса. Π§Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, ΠΌΡ‹ создали Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ класс с ΠΈΠΌΠ΅Π½Π΅ΠΌ Vehicle , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит ΠΎΠ±Ρ‰ΠΈΠ΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄.
    класс ΠΠ²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ:
        минимальная ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ = 50
        def __init __ (я, Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ, колСса, сидСнья, ΠΊΠΌ, счСт):
            self.driver = Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€
            self.noofwheels = колСса
            self.noofseats = мСста
            self.running = кмс
            self.bill = счСт
        
        def rateperkm (self):
            Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ self.bill / self.running
    
    класс Cab (ΠΠ²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ):
        минимальная ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ = 75
        def __init __ (я, Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ, колСса, сидСнья, ΠΊΠΌ, счСт, Ρ‚ΠΈΠΏ ΠΊΠ°Π±ΠΈΠ½Ρ‹):
            ΠΠ²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ .__ init __ (сам, Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ, колСса, сидСнья, ΠΊΠΌ, счСт)
            self.category = cabtype
    
    
    класс Автобус (ΠΠ²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ):
        минимальная ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ = 25
        def __init __ (я, Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ, колСса, сидСнья, ΠΊΠΌ, счСт, Ρ†Π²Π΅Ρ‚):
            ВранспортноС срСдство.__init __ (я, Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ, колСса, сидСнья, ΠΊΠΌ, счСт)
            self.color = Ρ†Π²Π΅Ρ‚
    
    cab_1 = Cab ('Prateek', 4, 3, 50, 700, 'Π²Π½Π΅Π΄ΠΎΡ€ΠΎΠΆΠ½ΠΈΠΊ')
    cab_1.category
    cab_1.rateperkm ()
    
    bus_1 = Автобус ('Дэйв', 4, 10, 50, 400, 'Π·Π΅Π»Π΅Π½Ρ‹ΠΉ')
    bus_1.color
    bus_1.rateperkm ()
     
    ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ эту ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Vehicle .__ init __ (self, driver, wheels, seat, km, bill) Π½Π° super () .__ init __ (driver, wheels, seat, km, bill) .
    super () ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ссылки Π½Π° Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹.

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

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

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

    ΠŸΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° позволяСт Π½Π°ΠΌ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π² Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅ΠΌ классС с Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΈ Π² Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ классС, Π½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅Π³ΠΎ класса отличаСтся ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса.
    класс ΠΠ²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ:
        сообщСниС def (self):
            print ("ΠœΠ΅Ρ‚ΠΎΠ΄ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса")
    
    класс Cab (ΠΠ²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ):
        сообщСниС def (self):
            print ("ΠœΠ΅Ρ‚ΠΎΠ΄ Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅Π³ΠΎ класса Cab")
    
    класс Автобус (ΠΠ²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ):
        сообщСниС def (self):
            print ("ΠœΠ΅Ρ‚ΠΎΠ΄ класса Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅ΠΉ ΡˆΠΈΠ½Ρ‹")
    
    
    x = ΠΠ²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ ()
    Икс.сообщСниС()
      ΠœΠ΅Ρ‚ΠΎΠ΄ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса 
    
    y = Кабина ()
    y.message ()
      ΠœΠ΅Ρ‚ΠΎΠ΄ класса Child Cab 
    
    z = Автобус ()
    z.message ()
      ΠœΠ΅Ρ‚ΠΎΠ΄ класса "ДСтский автобус" 
     
    Как Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅, ΠΏΠΎΠΊΠ°Π·Π°Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅, Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ классы ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса.

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

    Он позволяСт Π²Π°ΠΌ Π³ΠΈΠ±ΠΊΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΡ… Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ ΠΈ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹. Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Π΅Π³ΠΎ со всСми Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π΅Π»Π°Ρ‚ΡŒ это ΠΊΠ°ΠΊ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅.

    Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅ скриптС ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π·Π²Π°Π½ Π±Π΅Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° (игнорируя ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ„Ρ€Π°Π·Ρ‹). Или это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π·Π²Π°Π½ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ Ρ„Ρ€Π°Π·ΠΎΠΉ .

    сообщСниС класса:
    
        def подробности (self, Ρ„Ρ€Π°Π·Π° = None):
        
            Ссли Ρ„Ρ€Π°Π·Π° Π½Π΅ None:
                print ('МоС сообщСниС -' + Ρ„Ρ€Π°Π·Π°)
            Π΅Ρ‰Π΅:
                print ('Π”ΠΎΠ±Ρ€ΠΎ ΠΏΠΎΠΆΠ°Π»ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΌΠΈΡ€ Python')
            
    
    # ΠžΠ±ΡŠΠ΅ΠΊΡ‚
    x = Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ ()
        
    # Π’Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π±Π΅Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°
    x.details ()
        
    # Π’Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ
    x.details (Β«Π–ΠΈΠ·Π½ΡŒ прСкрасна»)
     

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

    Он ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для создания ΡƒΠ΄ΠΎΠ±ΠΎΡ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΠ³ΠΎ прСдставлСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.
    класс ΠΠ²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ:
        def __init __ (я, Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ, колСса, сидСнья):
            self.driver = Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€
            self.noofwheels = колСса
            self.noofseats = мСста
    
    veh_1 = ΠΠ²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ («Бэнди», 4, 2)
    ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ (veh_1)
    
      Π’Ρ‹Ρ…ΠΎΠ΄ 
     __main __. ΠžΠ±ΡŠΠ΅ΠΊΡ‚ Vehicle ΠΏΠΎ адрСсу 0x0000019ECCCA05F8
     
    класс ΠΠ²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ:
        def __init __ (я, Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ, колСса, сидСнья):
            self.driver = Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€
            self.noofwheels = колСса
            self.noofseats = мСста
    
        def __str __ (сам):
            Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ «Имя Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°:Β» + self.Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ + ";" + "Кол-Π²ΠΎ мСст Π² ΠΊΠ°Π±ΠΈΠ½Π΅:" + str (Π°Π²Ρ‚. сид.)
    
    veh_1 = ΠΠ²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ («Бэнди», 4, 2)
    ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ (veh_1)
    
      Π’Ρ‹Ρ…ΠΎΠ΄ 
    Имя водитСля: Бэнди;
    ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ мСст Π² ΠΊΠ°Π±ΠΈΠ½Π΅: 2
     

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

    Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡ Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ доступа ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ случайноС (ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½ΠΎΠ΅) ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ….
    • Когда ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π΄Π²Π° символа подчСркивания ‘__’ ΠΏΠ΅Ρ€Π΅Π΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°, это Π΄Π΅Π»Π°Π΅Ρ‚ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ нСдоступным Π²Π½Π΅ класса.Он становится частным Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠΌ , Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ эти Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹, ΠΊΡ€ΠΎΠΌΠ΅ ΠΊΠ°ΠΊ Π²Π½ΡƒΡ‚Ρ€ΠΈ класса. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠΌ модуля.
    • Если Π²Ρ‹ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠΈΠ²Π°Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅Π΄ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠΌ, это ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ , ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΈΠ»ΠΈ Π²Π½Π΅ класса.
    класс ΠšΠ²Π°Ρ€Ρ‚ΠΈΡ€Π°:
        def __init __ (сам):
            self.type = "ΠΏΡ€Π΅ΠΌΠΈΡƒΠΌ"
            self .__ bhk = "3 BHK"
    
    flat_1 = ΠšΠ²Π°Ρ€Ρ‚ΠΈΡ€Π° ()
    flat_1.type
    прСмия
    
    flat_1 .__ bhk
    AttributeError: ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ 'Flat' Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° '__bhk'
     
    Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ type — это общСдоступный Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚, Π° bhk — частный Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ нСльзя ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ Π²Π½Π΅ класса.

    Π“Π΅Ρ‚Ρ‚Π΅Ρ€Ρ‹ ΠΈ сСттСры

    Они ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для получСния ΠΈ обновлСния значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. Π‘Π΅Ρ‚Ρ‚Π΅Ρ€ — это ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΎΠ±Π½ΠΎΠ²Π»ΡΡŽΡ‰ΠΈΠΉ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. Getter — это ΠΌΠ΅Ρ‚ΠΎΠ΄, ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. Π”Π°Π²Π°ΠΉΡ‚Π΅ ΡƒΠ·Π½Π°Π΅ΠΌ это Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ….
    класс ΠΠ²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ:
        def __init __ (self, имя_Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°, имя_послСднСго_Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°):
            self.fdriver = имя_Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°
            self.ldriver = имя_послСднСго_Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°
            self.email = self.fdriver + '.' + self.ldriver + '@ uber.com'
    
    veh_1 = ΠΠ²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ («Бэнди», Β«Π‘Ρ‚ΡŽΠ°Ρ€Ρ‚Β»)
    
    veh_1.fdriver
      Бэнди 
    
    veh_1.email
      '[email protected]'
     
     
    Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ обновляСм имя Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°, Π½ΠΎ это Π½Π΅ влияСт Π½Π° адрСс элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдставляСт собой ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ ΠΈΠΌΠ΅Π½ΠΈ ΠΈ Ρ„Π°ΠΌΠΈΠ»ΠΈΠΈ.
    veh_1.fdriver = 'Π’ΠΎΠΌ'
    veh_1.fdriver
      'Вомь' 
    
    veh_1.email
      '[email protected]'
      
    Имя Π±Ρ‹Π»ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ с Бэнди Π½Π° Π’ΠΎΠΌΠ°, Π½ΠΎ адрСс элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹ остался ΠΏΡ€Π΅ΠΆΠ½ΠΈΠΌ. Π›Π°Π΄Π½ΠΎ, Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ΠΉ вопрос Β«Π° ΠΊΠ°ΠΊ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ адрСс элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹?Β». Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€Π° @property ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹. email (self) — это ΠΌΠ΅Ρ‚ΠΎΠ΄, Π½ΠΎ ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ΅ свойство. Π­Ρ‚ΠΎΡ‚ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ называСтся Getters and Setters .
    класс ΠΠ²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ:
        def __init __ (self, имя_Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°, имя_послСднСго_Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°):
            self.fdriver = имя_Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°
            self.ldriver = имя_послСднСго_Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°
            
        @имущСство
        def email (self):
            Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ self.fdriver + '.' + self.ldriver + '@ uber.com'
    
    veh_1 = ΠΠ²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ («Бэнди», Β«Π‘Ρ‚ΡŽΠ°Ρ€Ρ‚Β»)
    veh_1.fdriver = 'Π’ΠΎΠΌ'
    veh_1.email
      '[email protected] '
     

    Как ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ имя ΠΈ Ρ„Π°ΠΌΠΈΠ»ΠΈΡŽ автоматичСски ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ адрСса элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹

    класс ΠΠ²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ:
        def __init __ (self, имя_Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°, имя_послСднСго_Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°):
            self.fdriver = имя_Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°
            self.ldriver = имя_послСднСго_Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°
            
        @имущСство
        def email (self):
            Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ self.fdriver + '.' + self.ldriver + '@ uber.com'
    
        @ email.setter
        элСктронная ΠΏΠΎΡ‡Ρ‚Π° def (сам, адрСс):
            first = адрСс [: address.find ('.')]
            last = адрСс [address.find ('.') +1: address.find (' @ ')]
            self.fdriver = ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ
            self.ldriver = послСдний
    
    veh_1 = ΠΠ²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ («Бэнди», Β«Π‘Ρ‚ΡŽΠ°Ρ€Ρ‚Β»)
    veh_1.email = '[email protected]'
    veh_1.fdriver
      'Π³Π»ΡƒΠ±ΠΎΠΊΠΈΠΉ' 
    
    veh_1.ldriver
      'bhalla' 
     

    ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°

    Π’ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ ΠΌΠΈΡ€Π΅ Π³Π΅Ρ‚Ρ‚Π΅Ρ€Ρ‹ ΠΈ сСттСры Π² основном ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π»ΠΎΠ³ΠΈΠΊΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ. Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ создаСм класс ΠΏΠΎΠΆΠ΅Ρ€Ρ‚Π²ΠΎΠ²Π°Π½ΠΈΠΉ с Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠΌ amount. Π‘ΡƒΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚ 10 Π΄ΠΎ 1 000 000. Если ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Π²ΠΎΠ΄ΠΈΡ‚ мСньшС 10, ΠΎΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ установлСно ΠΊΠ°ΠΊ 10.Π’ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, Ссли ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ пытаСтся ввСсти Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ большС 1 ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π°, ΠΎΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ 1 ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠΌ.
    ΠΏΠΎΠΆΠ΅Ρ€Ρ‚Π²ΠΎΠ²Π°Π½ΠΈΠ΅ класса:
        def __init __ (self, количСство):
            self.amount = количСство
            
        @имущСство
        сумма опрСдСлСния (ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ):
            Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ self .__ amount
    
        @ amount.setter
        def amount (self, amount):
            Ссли сумма 1000000:
                self .__ amount = 1000000
            Π΅Ρ‰Π΅:
                self .__ amount = количСство
    
    
    Π±Π»Π°Π³ΠΎΡ‚Π²ΠΎΡ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ = ΠΏΠΎΠΆΠ΅Ρ€Ρ‚Π²ΠΎΠ²Π°Π½ΠΈΠ΅ (5)
    charity.amount
      10 
     

    Как ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ класс

    Π’ этом Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΌΡ‹ расскаТСм, ΠΊΠ°ΠΊ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ класс ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° ΠΈΠ»ΠΈ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°.
    1. Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ сцСнарий ΠΊΠ°ΠΊ Mymodule.py
    2. "" "
      Класс автомобиля
      "" "
      
      класс Cab:
          
          #Initialise для ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ
          numberofcabs = 0
      
          def __init __ (сам, Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ, ΠΊΠΌ, ΠΎΠΏΠ»Π°Ρ‚Π°):
              self.driver = Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€
              self.running = кмс
              self.bill = ΠΏΠ»Π°Ρ‚ΠΈΡ‚ΡŒ
              Cab.numberofcabs = Cab.numberofcabs + 1
      
          # БрСдняя ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° Π·Π° ΠΊΠΌ
          def rateperkm (self):
              Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ self.bill / self.running
              
          # Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ количСство Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Ρ… ΠΊΠ°Π±ΠΈΠ½
          @classmethod
          def noofcabs (cls):
              Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ cls.количСство ΠΊΠ°Π±ΠΈΠ½
      
      
      Ссли __name__ == "__main__":
          
          #Cab class
          firstcab = Cab ("РамСш", 80, 1200)
      
          Атрибут #driver Π² классС Cab
          ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ (firstcab.driver)
          
          #class method
          ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ (Cab.noofcabs ())
       
    3. Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅ ΠΊΠΎΠ΄Π΅ ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ хранится Ρ„Π°ΠΉΠ» Mymodule.py
    4. ΠΈΠΌΠΏΠΎΡ€Ρ‚ ОБ
      os.chdir ("C: / Users / DELL / Desktop /")
      ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Mymodule
       
    5. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈΠ»ΠΈ запуститС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ имя модуля Π² качСствС прСфикса ΠΏΠ΅Ρ€Π΅Π΄ использованиСм класса ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° класса
    6. #Cab класс Π² Mymodule.Ρ€Ρƒ
      firstcab = Mymodule.Cab ("РамСш", 80, 1200)
      
      Атрибут #driver Π² классС ΠΊΠ°Π±ΠΈΠ½Ρ‹
      firstcab.driver
      
      #rateperkm ΠΌΠ΅Ρ‚ΠΎΠ΄ экзСмпляра Π² Mymodule2.py
      firstcab.rateperkm ()
      
      #noofcabs classmethod Π² Mymodule2.py
      Mymodule.Cab.noofcabs ()
       
      Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ записи ΠΈΠΌΠ΅Π½ΠΈ модуля для доступа ΠΊ классу, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Β«fromΒ», ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ пространство ΠΈΠΌΠ΅Π½.
      ΠΈΠ· Mymodule import *
      firstcab = Cab ("Бэнди", 80, ['Π”Π΅Π»ΠΈ', 'Нойда'], 1200, 3)
       

    Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ __name__ == «__main__»?

    Π›ΡŽΠ±ΠΎΠΉ ΠΊΠΎΠ΄ Π²Π½ΡƒΡ‚Ρ€ΠΈ if __name__ == '__main__': Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ запуститС ваш.py Ρ„Π°ΠΉΠ» Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ (с Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π°).

    Если Π²Ρ‹ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ import Mymodule , ΠΊΠΎΠ΄ Π²Π½ΡƒΡ‚Ρ€ΠΈ if __name__ == '__main__': Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΡƒΡ‰Π΅Π½.

    Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ это, сохранитС ΠΈ запуститС ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ сцСнарий ΠΈΠ· Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π°, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Π΅Π³ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°.
    Ссли __name__ == '__main__':
        print ('ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚')
    Π΅Ρ‰Π΅:
        print ('Π’Ρ‚ΠΎΡ€ΠΎΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚')
     

    Как ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС

    Π’Π²Π΅Π΄ΠΈΡ‚Π΅ cd , Π·Π°Ρ‚Π΅ΠΌ ΠΏΡ€ΠΎΠ±Π΅Π» ΠΈ имя ΠΏΠ°ΠΏΠΊΠΈ.ПослС установки ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ввСсти имя вашСго Ρ„Π°ΠΉΠ»Π° скрипта Python. Π‘ΠΌ. Π‘Π½ΠΈΠΌΠΎΠΊ Π½ΠΈΠΆΠ΅.

    Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅

    Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ класс Rectangle , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ length ΠΈ width. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ 2 ΠΌΠ΅Ρ‚ΠΎΠ΄Π° вычислСния ΠΏΠ»ΠΎΡ‰Π°Π΄ΠΈ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ° ΠΈ ΠΏΠ΅Ρ€ΠΈΠΌΠ΅Ρ‚Ρ€Π° ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°. ΠŸΠ»ΠΎΡ‰Π°Π΄ΡŒ рассчитываСтся ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π΄Π»ΠΈΠ½Ρ‹ Π½Π° ΡˆΠΈΡ€ΠΈΠ½Ρƒ. ΠŸΠ΅Ρ€ΠΈΠΌΠ΅Ρ‚Ρ€ Π² 2 Ρ€Π°Π·Π° большС (Π΄Π»ΠΈΠ½Π° + ΡˆΠΈΡ€ΠΈΠ½Π°). Π Π΅ΡˆΠΈΡ‚Π΅ ΠΈ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠΉΡ‚Π΅ своС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π² ΠΏΠΎΠ»Π΅ для ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π².

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

    ПониманиС 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 ΠΈΠ»ΠΈ the capitalize для измСнСния ΠΎΠ±ΠΎΠΈΡ… строковых Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² ΠΌΠΎΠ΅Π³ΠΎ экзСмпляра:

    Π”ΠΎ сих ΠΏΠΎΡ€ ΠΌΡ‹ создали ΠΎΠ΄ΠΈΠ½ экзСмпляр класса Car ΠΈ установили Π΅Π³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ экзСмпляр класса с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌΠΈ:

    ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΏΠΎ сути, Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ выполняли ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ дСйствия.НапримСр, Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ ΠΈ Π·Π°Π³Π»Π°Π²Π½Ρ‹Π΅ для строк. ΠšΠ»ΡŽΡ‡ ΠΊ познанию ΠΈΠ½Ρ‚ΡƒΠΈΡ†ΠΈΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π² O.O.P. это ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ — это Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌΠΈ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ экзСмпляра класса . Когда ΠΌΡ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ lower для строки, ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΠΌ содСрТимоС этой ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ строки Π² Π½ΠΈΠΆΠ½ΠΈΠΉ рСгистр.

    Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅, создав Π½ΠΎΠ²Ρ‹ΠΉ класс с ΠΈΠΌΠ΅Π½Π΅ΠΌ Dog ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ² наши собствСнныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ класс ΠΈ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π΅Π³ΠΎ экзСмпляр, ΠΊΠ°ΠΊ ΠΌΡ‹ Π΄Π΅Π»Π°Π»ΠΈ это Ρ€Π°Π½ΡŒΡˆΠ΅ с классом Car.Π₯отя моя собака ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎΠΉ, ΠΎΠ½Π° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… дСйствий, ΠΏΠΎΠΊΠ° я Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡŽ для Π½Π΅Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹. ВзглянитС Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

    Как ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ, ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова def , ΠΊΠ°ΠΊ Ссли Π±Ρ‹ ΠΌΡ‹ Π΄Π΅Π»Π°Π»ΠΈ это для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ отступ справа ΠΎΡ‚ Ρ‚Π΅Π»Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, ΠΊΠ°ΠΊ Ссли Π±Ρ‹ ΠΌΡ‹ для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

    Ѐункция ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Β«selfΒ». Π­Ρ‚ΠΎΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ прСдставляСт экзСмпляр, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ выполняСтся ΠΌΠ΅Ρ‚ΠΎΠ΄.

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

    Оба класса, созданныС Π΄ΠΎ этого ΠΏΠ°Ρ€Π°Π³Ρ€Π°Ρ„Π°, содСрТат значСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΊΠ°ΠΊ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹. Π­Ρ‚ΠΎ Π½Π΅ ΠΈΠ΄Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ сцСнарий, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ создаСт ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΈ, Ρ‡Ρ‚ΠΎ Π±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½ΠΎ, , Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΡ‡Π΅Π½ΡŒ Π»Π΅Π³ΠΊΠΎ Π·Π°Π±Ρ‹Ρ‚ΡŒ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π²Π°ΠΆΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ .

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

    ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ класса — это ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ вызываСтся ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΈΠΌΠ΅Π½ΠΈ класса. Он всСгда называСтся init .

    Он содСрТит ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово self, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ относится ΠΊ создаваСмому экзСмпляру, ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Ρ‹ программистом ΠΊΠ°ΠΊ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ послС создания экзСмпляра, ΠΊΠ°ΠΊ ΠΌΡ‹ это Π΄Π΅Π»Π°Π΅ΠΌ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π½ΠΈΠΆΠ΅:

    Π’Ρ‚ΠΎΡ€ΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ class — это ΠΌΠ΅Ρ‚ΠΎΠ΄ repr , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сообщаСт Python ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° вызываСтся экзСмпляр класса, ΠΊΠ°ΠΊ Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ Π²Ρ‹ΡˆΠ΅.

    Π₯ΠΎΡ‚ΠΈΡ‚Π΅ Π·Π½Π°Ρ‚ΡŒ, какая функция Ρƒ Ρ‚ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°? Π‘ΠΌ. Π Π°Π½Π΅Π΅ Π²Π²Π΅Π΄Π΅Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ help . ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ встроСнныС классы Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ руководство, ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‰Π΅Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΈΠ½Ρ‚ΡƒΠΈΡ†ΠΈΡŽ, Π»Π΅ΠΆΠ°Ρ‰ΡƒΡŽ Π² основС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΈΠ»ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°, ΠΌΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это для Π½Π°ΡˆΠΈΡ… собствСнных классов, ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это, Π΄ΠΎΠ±Π°Π²ΠΈΠ² Docstring .

    Π‘Ρ‚Ρ€ΠΎΠΊΠ° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ — это ΠΊΡ€Π°Ρ‚ΠΊΠΈΠΉ тСкст, ΠΎΠ±ΡŠΡΡΠ½ΡΡŽΡ‰ΠΈΠΉ, Ρ‡Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚.

    Π’ΠΊΠ»ΡŽΡ‡ΠΈΠ² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ Π² свои классы ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Π³ΠΎΡ€Π°Π·Π΄ΠΎ большС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ созданных ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Π»Π΅Π³Ρ‡Π°Ρ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ использованиС ΠΊΠΎΠ΄Π° ΠΈ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ ΠΏΠΎΠ½ΡΡ‚ΡŒ Π΅Π³ΠΎ.ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ строка Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ всСгда Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΠΌΠ΅Ρ‚ΡŒ отступ Π½Π° Ρ‚ΠΎΠΌ ΠΆΠ΅ ΡƒΡ€ΠΎΠ²Π½Π΅ Π±Π»ΠΎΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ½Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚.

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

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

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

    Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° наслСдования ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ класс транспорта для хранСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, которая примСняСтся ΠΊΠΎ всСм доступным Π²ΠΈΠ΄Π°ΠΌ транспорта, ΠΈ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹, спСцифичныС для Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»Π΅ΠΉ ΠΈΠ»ΠΈ ΠΏΠΎΠ΅Π·Π΄ΠΎΠ², Π² ΠΈΡ… собствСнных классах. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ класс MyTransports ΠΊΠ°ΠΊ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ класс, Π° классы Car ΠΈ Train ΠΊΠ°ΠΊ Π±Ρ€Π°Ρ‚ΡŒΠ΅Π² ΠΈ сСстСр.

    ΠŸΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Π»ΠΈΠΆΠ΅ ΠΊ Π·Π°Π΄Π°Ρ‡Π°ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ выполняСтС Π² ИВ-ΠΎΡ‚Π΄Π΅Π»Π΅, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ систСма, которая обслуТиваСт сотрудников вашСй ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ. Π£ вас ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ класс с ΠΈΠΌΠ΅Π½Π΅ΠΌ employee , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ для Ρ‚Π°ΠΊΠΈΡ… Π²Π΅Ρ‰Π΅ΠΉ, ΠΊΠ°ΠΊ , ΠΏΠΎΠ»Π½ΠΎΠ΅ имя Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°, имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ , ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ΅ Π² систСмах ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, Π³Ρ€ΡƒΠΏΠΏΡ‹ , ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ сотрудник, ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.Π’ систСмС Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ класс ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚Π°ΠΊΠΆΠ΅ являСтся сотрудником, Π½ΠΎ с Π½ΠΈΠΌ связана Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ информация, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, сотрудники, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ΄Ρ‡ΠΈΠ½ΡΡŽΡ‚ΡΡ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡƒ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Ρƒ.

    ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Python | ΠšΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ ООП Python

    ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠ°ΠΊ дисциплина ΠΏΡ€ΠΈΠΎΠ±Ρ€Π΅Π»ΠΎ всСобщСС ΠΏΠΎΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ срСди Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ². Python, вострСбованный язык программирования, Ρ‚Π°ΠΊΠΆΠ΅ слСдуСт ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования. Он занимаСтся объявлСниСм классов ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Python, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°ΡŽΡ‚ основу ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΉ ООП.Π­Ρ‚Π° ΡΡ‚Π°Ρ‚ΡŒΡ ΠΎ Β«Python ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования» ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Ρ‚ вас Ρ‡Π΅Ρ€Π΅Π· объявлСниС классов Python, созданиС экзСмпляров ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈΠ· Π½ΠΈΡ… вмСстС с Ρ‡Π΅Ρ‚Ρ‹Ρ€ΡŒΠΌΡ мСтодологиями ООП.

    Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ рассмотрСны ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ аспСкты:

    ΠŸΡ€ΠΈΡΡ‚ΡƒΠΏΠΈΠΌ.

    Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅? (ΠšΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ ООП Π² Python)

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

    Π’Π΅ΠΏΠ΅Ρ€ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ясноС прСдставлСниС ΠΎ Ρ‚ΠΎΠΌ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ oops вмСсто pop, я пСрСчислил Π½ΠΈΠΆΠ΅ различия.

    Π Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠžΠ±ΡŠΠ΅ΠΊΡ‚ ΠΌΠΎΠΆΠ΅Ρ‚ свободно ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒΡΡ Π² функциях-Ρ‡Π»Π΅Π½Π°Ρ…

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

    7

    Π­Ρ‚ΠΎ восходящий ΠΏΠΎΠ΄Ρ…ΠΎΠ΄

    Π­Ρ‚ΠΎ нисходящий ΠΏΠΎΠ΄Ρ…ΠΎΠ΄

    ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π° Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹

    ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π° Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

    Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Access ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹

    ‘public’, private ‘, protected’

    НС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ доступа

    Π‘ΠΎΠ»Π΅Π΅ бСзопасный

    МСнСС бСзопасный

    Π”Π°Π½Π½Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ свободно ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒΡΡ ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ n для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ…

    Он ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ наслСдованиС

    Он Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ наслСдованиС

    Π­Ρ‚ΠΎ всС ΠΎ различиях, ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ³Π°ΡΡΡŒ Π²ΠΏΠ΅Ρ€Π΅Π΄, Π΄Π°Π²Π°ΠΉΡ‚Π΅ разбСрСмся с Python OOP Conceots.

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

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

    Π’ΠΎΡ‚ ΠΈ всС ΠΎ различиях, забСгая Π²ΠΏΠ΅Ρ€Π΅Π΄, Π΄Π°Π²Π°ΠΉΡ‚Π΅ разбСрСмся с классами ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ.

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

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

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

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

    class class1 (): // class 1 - это имя класса
     

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

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

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

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

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

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

    ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

     class employee ():
        def __init __ (self, name, age, id, salary): // созданиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ
            сСбя.name = name // self - это экзСмпляр класса
            self.age = возраст
            self.salary = Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Π°
            self.id = id
    
    emp1 = employee ("harshit", 22,1000,1234) // созданиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²
    emp2 = сотрудник ("Π°Ρ€Π΄ΠΆΡƒΠ½", 23,2000,2234)
    print (emp1 .__ dict __) // РаспСчатываСт ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ
     

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

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

    Π˜Ρ‚Π°ΠΊ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡŒΡ‚Π΅ ΠΌΠ½Π΅ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒ вас с мСтодологиями ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования:

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

    ΠœΠ΅Ρ‚ΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования ΠΈΠΌΠ΅ΡŽΡ‚ Π΄Π΅Π»ΠΎ со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ концСпциями.

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

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

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

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

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

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

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

    ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

     class employee1 (): // Π­Ρ‚ΠΎ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ класс
    def __init __ (я, имя, возраст, Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Π°):
    self.name = имя
    self.age = возраст
    self.salary = Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Π°
    
    class childemployee (employee1): // Π­Ρ‚ΠΎ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ класс
    def __init __ (я, имя, возраст, Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Π°, ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€):
    self.name = имя
    self.age = возраст
    self.salary = Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Π°
    сСбя.id = id
    emp1 = employee1 ('суровый', 22,1000)
    
    ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ (emp1.age)
     

    Π’Ρ‹Ρ…ΠΎΠ΄ : 22

    ОбъяснСниС:

    • Π― Π±Π΅Ρ€Ρƒ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ класс ΠΈ создал конструктор (__init__), сам класс ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ (‘name’, ‘age’ ΠΈ ‘salary ‘).

    • Π‘ΠΎΠ·Π΄Π°Π½ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ класс childemployee, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ наслСдуСт свойства ΠΎΡ‚ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса, ΠΈ, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, созданы экзСмпляры ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² emp1 ΠΈ emp2 Π² соотвСтствии с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ.

    • НаконСц, я Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π» возраст emp1. Π§Ρ‚ΠΎ ΠΆ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΡƒΡ‡Ρƒ всСго, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ€Π°ΡΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ вСсь ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ, ΠΈΠ»ΠΈ имя, ΠΈΠ»ΠΈ Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Ρƒ.

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

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

    ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

     класс employee (): // БупСркласс
    def __init __ (я, имя, возраст, Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Π°):
    сСбя.name = имя
    self.age = возраст
    self.salary = Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Π°
    class childemployee1 (employee): // ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ класс
    def __init __ (я, имя, возраст, Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Π°):
    self.name = имя
    self.age = возраст
    self.salary = Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Π°
    
    class childemployee2 (childemployee1): // Π’Ρ‚ΠΎΡ€ΠΎΠΉ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ класс
    def __init __ (я, имя, возраст, Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Π°):
    self.name = имя
    self.age = возраст
    self.salary = Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Π°
    emp1 = сотрудник ('суровый', 22,1000)
    emp2 = childemployee1 ('Π°Ρ€Π΄ΠΆΡƒΠ½', 23,2000)
    
    ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ (emp1.age)
    ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ (emp2.age)
     

    Π’Ρ‹Π²ΠΎΠ΄: 22,23

    ОбъяснСниС:

    • Π­Ρ‚ΠΎ Ρ‡Π΅Ρ‚ΠΊΠΎ объяснСно Π² ΠΊΠΎΠ΄Π΅, написанном Π²Ρ‹ΡˆΠ΅. Π—Π΄Π΅ΡΡŒ я ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ» супСркласс ΠΊΠ°ΠΊ сотрудник, Π° Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ класс ΠΊΠ°ΠΊ childemployee1.Π’Π΅ΠΏΠ΅Ρ€ΡŒ childemployee1 дСйствуСт ΠΊΠ°ΠΊ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ для childemployee2.

    • Π― создал Π΄Π²Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° emp1 ΠΈ emp2, Π³Π΄Π΅ я ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ «имя», «возраст», Β«Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Π°Β» для emp1 ΠΈΠ· супСркласса «сотрудник» ΠΈ «имя», «возраст,Β« Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Π° Β». »И« id Β»ΠΈΠ· Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса« childemployee1 Β»

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

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

    ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

     класс сотрудника ():
    def __init __ (я, имя, возраст, Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Π°): // Π˜Π΅Ρ€Π°Ρ€Ρ…ΠΈΡ‡Π΅ΡΠΊΠΎΠ΅ наслСдованиС
    self.name = имя
    self.age = возраст
    self.salary = Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Π°
    
    класс childemployee1 (сотрудник):
    def __init __ (я, имя, возраст, Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Π°):
    self.name = имя
    self.age = возраст
    self.salary = Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Π°
    
    класс childemployee2 (сотрудник):
    def __init __ (я, имя, возраст, Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Π°):
    self.name = имя
    self.age = возраст
    self.salary = Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Π°
    emp1 = сотрудник ('суровый', 22,1000)
    emp2 = сотрудник ('Π°Ρ€Π΄ΠΆΡƒΠ½', 23,2000)
    
    ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ (emp1.возраст)
    ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ (emp2.age)
     

    Π’Ρ‹Π²ΠΎΠ΄: 22,23

    ПояснСниС:
    • Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ясно Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ сущСствуСт Π΄Π²Π° Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… класса Β«childemployee1Β» ΠΈ Β«childemployee2Β». Они Π½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΡ‚ ΠΎΠ±Ρ‰Π΅Π³ΠΎ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ называСтся «слуТащий».

    • ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ emp1 ΠΈ emp2 ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ ΠΏΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌ «имя», «возраст», Β«Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Π°Β».

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

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

    ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

     class employee1 (): // Π ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ класс
        def __init __ (я, имя, возраст, Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Π°):
            self.name = имя
            self.age = возраст
            self.salary = Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Π°
    
    class employee2 (): // Π ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ класс
        def __init __ (я, имя, возраст, Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Π°, ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€):
         self.name = имя
         self.age = возраст
         self.salary = Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Π°
         self.id = id
    
    класс childemployee (сотрудник1, сотрудник2):
        def __init __ (я, имя, возраст, Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Π°, ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€):
         self.name = имя
         self.age = возраст
         сСбя.Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Π° = Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Π°
         self.id = id
    emp1 = employee1 ('суровый', 22,1000)
    emp2 = сотрудник2 ('Π°Ρ€Π΄ΠΆΡƒΠ½', 23,2000,1234)
    
    ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ (emp1.age)
    ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ (emp2.id)
     

    Π’Ρ‹Π²ΠΎΠ΄: 22,1234

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

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

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

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

    ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ Π±Ρ‹Π²Π°Π΅Ρ‚ Π΄Π²ΡƒΡ… Ρ‚ΠΈΠΏΠΎΠ²:

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

    ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

     класс employee1 ():
    def имя (сам):
    print ("ЖСстокоС Π΅Π³ΠΎ имя")
    def Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Π° (ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ):
    print (Β«3000 - Π΅Π³ΠΎ Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Π°Β»)
    
    def age (self):
    print (Β«Π΅ΠΌΡƒ 22 Π³ΠΎΠ΄Π°Β»)
    
    класс employee2 ():
    def имя (сам):
    print (Β«Π Π°Ρ…ΡƒΠ» - Π΅Π³ΠΎ имя»)
    
    def Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Π° (ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ):
    print (Β«4000 - Π΅Π³ΠΎ Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Π°Β»)
    
    def age (self):
    print (Β«Π΅ΠΌΡƒ 23 Π³ΠΎΠ΄Π°Β»)
    
    def func (obj): // ΠŸΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΌΠ΅Ρ‚ΠΎΠ΄Π°
    obj.name ()
    obj.salary ()
    ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π²ΠΎΠ·Ρ€Π°ΡΡ‚()
    
    obj_emp1 = сотрудник1 ()
    obj_emp2 = сотрудник2 ()
    
    func (obj_emp1)
    func (obj_emp2)
     

    Π’Ρ‹Π²ΠΎΠ΄:

    Π₯Π°Ρ€ΡˆΠΈΡ‚ — Π΅Π³ΠΎ имя
    3000 — Π΅Π³ΠΎ Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Π°
    22 — Π΅Π³ΠΎ возраст
    Π Π°Ρ…ΡƒΠ» — Π΅Π³ΠΎ имя
    4000 — Π΅Π³ΠΎ Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Π°
    23 — Π΅Π³ΠΎ возраст

    ПояснСниС:

    • Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ я создал Π΄Π²Π° класса Β«employee1Β» ΠΈ Β«employee2Β» ΠΈ создал Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для Β«nameΒ», Β«salaryΒ» ΠΈ Β«ageΒ» ΠΈ распСчатал ΠΈΡ… значСния, Π½Π΅ принимая ΠΈΡ… Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

    • Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄ΠΎΠ±Ρ€ΠΎ ΠΏΠΎΠΆΠ°Π»ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ, Π³Π΄Π΅ я создал Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ Β«objΒ» ΠΈ Π²Ρ‹Π·Π²Π°Π» всС Ρ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ «имя», «возраст» ΠΈ Β«Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Π°Β».

    • ПозТС Π±Ρ‹Π»ΠΈ созданы экзСмпляры ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² emp_1 ΠΈ emp_2 для Π΄Π²ΡƒΡ… классов ΠΈ просто Π²Ρ‹Π·Π²Π°Π½Π° функция. Π’Π°ΠΊΠΎΠΉ Ρ‚ΠΈΠΏ называСтся ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт классу ΠΈΠΌΠ΅Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° с ΠΎΠ΄Π½ΠΈΠΌ ΠΈ Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ.

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

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

    ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

     класс сотрудника ():
       def __init __ (я, имя, возраст, ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€, Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Π°):
           self.name = имя
           self.age = возраст
           self.salary = Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Π°
           self.id = id
    def Π·Π°Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ (ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ):
            ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ
    
    класс childemployee1 (сотрудник):
    
       def Π·Π°Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ (self): // ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния
          print ("Π΄Π΅Π½Π΅Π³ Π½Π΅Ρ‚")
    
    класс childemployee2 (сотрудник):
    
       def Π·Π°Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ (ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ):
           print ("Π΅ΡΡ‚ΡŒ дСньги")
    
    c = childemployee1
    c.Π·Π°Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ (сотрудник)
    d = childemployee2
    d.earn (сотрудник)
     

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

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

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

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

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

    ΠŸΠΎΠ·Π²ΠΎΠ»ΡŒΡ‚Π΅ ΠΌΠ½Π΅ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ Π²Π°ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ для Π»ΡƒΡ‡ΡˆΠ΅Π³ΠΎ понимания.

    ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

     класс сотрудника (ΠΎΠ±ΡŠΠ΅ΠΊΡ‚):
    def __init __ (сам):
    self.name = 1234
    self._age = 1234
    self .__ salary = 1234
    
    ΠΎΠ±ΡŠΠ΅ΠΊΡ‚1 = сотрудник ()
    ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ (object1.name)
    ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ (ΠΎΠ±ΡŠΠ΅ΠΊΡ‚1._age)
    ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ (ΠΎΠ±ΡŠΠ΅ΠΊΡ‚1 .__ Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Π°)
     

    Π’Ρ‹Π²ΠΎΠ΄:

    1234
    ΠžΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ (послСдний Π²Ρ‹Π·ΠΎΠ² послСдним):
    1234
    Π€Π°ΠΉΠ» Β«C: /Users/Harshit_Kant/PycharmProjects/test1/venv/encapsu.pyΒ», строка 10, Π²
    print (object1.__salary)
    AttributeError: ΠžΠ±ΡŠΠ΅ΠΊΡ‚ Β«employeeΒ» Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° Β«__salaryΒ»

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

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

    ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

     класс сотрудника ():
    def __init __ (сам):
    self .__ maxearn = 1000000
    def Π·Π°Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ (ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ):
    print ("Π·Π°Ρ€Π°Π±ΠΎΡ‚ΠΎΠΊ: {}".Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ (self .__ maxearn))
    
    def setmaxearn (self, Π·Π°Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ): // ΠΌΠ΅Ρ‚ΠΎΠ΄ установки, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ для доступа ΠΊ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΎΠΌΡƒ классу
    self .__ maxearn = Π·Π°Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ
    
    emp1 = сотрудник ()
    emp1.earn ()
    
    emp1 .__ maxearn = 10000
    emp1.earn ()
    
    emp1.setmaxearn (10000)
    emp1.earn ()
    
     

    Π’Ρ‹Ρ…ΠΎΠ΄:

    Π΄ΠΎΡ…ΠΎΠ΄: 1000000, Π΄ΠΎΡ…ΠΎΠ΄: 1000000, Π΄ΠΎΡ…ΠΎΠ΄: 10000

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

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

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

    Абстракция:

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

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

    ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

     ΠΈΠ· abc import ABC, abstractmethod
    класс сотрудника (ABC):
    def emp_id (self, id, name, age, salary): // Абстракция
    ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ
    
    класс childemployee1 (сотрудник):
    def emp_id (self, id):
    print ("emp_id - 12345")
    
    emp1 = childemployee1 ()
    emp1.emp_id (ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€)
    
     

    Π’Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ : emp_id — 12345

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

    ЯвляСтся Π»ΠΈ Python Π½Π° 100% ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ?

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

    ΠžΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

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

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