Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅

Π—Π°ΠΌΠ΅Ρ‚ΠΊΠΈ ΠΎΠ± ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ систСмС языка Python Ρ‡.1

НСсколько Π·Π°ΠΌΠ΅Ρ‚ΠΎΠΊ ΠΎΠ± ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ систСмС python’a. Рассчитаны Π½Π° Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ ΡƒΠΆΠ΅ ΡƒΠΌΠ΅Π΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° python. Π Π΅Ρ‡ΡŒ ΠΈΠ΄Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎ Π½ΠΎΠ²Ρ‹Ρ… классах (new-style classes) Π² python 2.3 ΠΈ Π²Ρ‹ΡˆΠ΅. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ рассказываСтся, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈ ΠΊΠ°ΠΊ происходит поиск Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ².

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

Π£ a Ρ‚ΠΎΠΆΠ΅ Π΅ΡΡ‚ΡŒ __dict__ ΠΈ __class__:

Класс ΠΈ Ρ‚ΠΈΠΏ β€” это ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅.

a.__dict__ β€” это ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ находятся Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ (ΠΈΠ»ΠΈ спСцифичныС для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°) Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹, Π² Π΄Π°Π½Π½ΠΎΠΌ случаС ‘name’. А Π² a.__class__ класс (Ρ‚ΠΈΠΏ).

И, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ… класса присваиваниС self.foo = bar практичСски ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½ΠΎ self.__dict__[‘foo’] = bar ΠΈΠ»ΠΈ сводится ΠΊ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎΠΌΡƒ Π²Ρ‹Π·ΠΎΠ²Ρƒ.

Π’ __dict__ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π½Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² класса, дСскрипторов, классовых ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, свойств, статичСских ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² класса, всС ΠΎΠ½ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ динамичСски с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ класса ΠΈΠ· __class__ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°, ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ спСцифичными ΠΈΠΌΠ΅Π½Π½ΠΎ для класса (Ρ‚ΠΈΠΏΠ°) ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π° Π½Π΅ для самого ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€. ΠŸΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ класс ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° a:

Π‘ΠΌΠΎΡ‚Ρ€ΠΈΠΌ, Ρ‡Ρ‚ΠΎ помСнялось.

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ a.name ΠΎΡΡ‚Π°Π»ΠΎΡΡŒ ΠΏΡ€Π΅ΠΆΠ½ΠΈΠΌ, Ρ‚.Π΅. __init__ Π½Π΅ вызывался ΠΏΡ€ΠΈ смСнС класса.

Π Π°Π±ΠΎΡ‚Π° с Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°: установка, ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΈ поиск, Ρ€Π°Π²Π½ΠΎΡΠΈΠ»ΡŒΠ½Π° Π²Ρ‹Π·ΠΎΠ²Ρƒ встроСнных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ settattr, delattr, getattr:

a.x = 1 setattr(a, ‘x’, 1)
del a.x delattr(a, ‘x’)
a.x getattr(a, ‘x’)

ΠŸΡ€ΠΈ этом стоит стоит ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ setattr ΠΈ delattr Π²Π»ΠΈΡΡŽΡ‚ ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ сам ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ (Ρ‚ΠΎΡ‡Π½Π΅Π΅ a.__dict__), ΠΈ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ класс ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

qux β€” являСтся классовой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Ρ‚.Π΅. ΠΎΠ½Π° Β«ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚Β» классу B, Π° Π½Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ a:

Если ΠΌΡ‹ попытаСмся ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ этот Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚, Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΠΎΡˆΠΈΠ±ΠΊΡƒ, Ρ‚.ΠΊ. delattr Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ ΠΈΠ· a.__dict__

Π”Π°Π»Π΅Π΅, Ссли ΠΌΡ‹ попытаСмся ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ (ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ) Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚, setattr помСстит Π΅Π³ΠΎ Π² __dict__, спСцифичный для Π΄Π°Π½Π½ΠΎΠ³ΠΎ, ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

Ну ΠΈ Ρ€Π°Π· Π΅ΡΡ‚ΡŒ ‘qux’ Π² __dict__ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ delattr:

ПослС удалСния, a.qux Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ классовой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ:

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

ΠšΠ»Π°ΡΡΡ‹ β€” это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΈ Ρƒ Π½ΠΈΡ… Ρ‚ΠΎΠΆΠ΅ Π΅ΡΡ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ __class__ ΠΈ __dict__.

>>> class A ( object ):
. pass
.

ΠŸΡ€Π°Π²Π΄Π° __dict__ Ρƒ классов Π½Π΅ совсСм ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ

Но __dict__ отвСтствСнСн Π·Π° доступ ΠΊ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΌΡƒ пространству ΠΈΠΌΠ΅Π½, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ хранятся ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, дСскрипторы, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, свойства ΠΈ ΠΏΡ€ΠΎΡ‡Π΅Π΅:

Π’ классах ΠΏΠΎΠΌΠΈΠΌΠΎ __class__ ΠΈ __dict__, имССтся Π΅Ρ‰Π΅ нСсколько ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ²: __bases__ β€” список прямых Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ, __name__ β€” имя класса. [1]

ΠšΠ»Π°ΡΡΡ‹ ΠΌΠΎΠΆΠ½ΠΎ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ эдакими Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡΠΌΠΈ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ интСрфСйс Ρ‚ΠΈΠΏΠ°. ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²ΠΎ всСх классов (ΠΈΠ»ΠΈ Ρ‚ΠΈΠΏΠΎΠ²) ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‚ мноТСству всСх ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Π° Ρ‚ΠΎΡ‡Π½Π΅Π΅ являСтся Π΅Π³ΠΎ подмноТСством. Π˜Π½Π°Ρ‡Π΅ говоря, любой класс являСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ, Π½ΠΎ Π½Π΅ всякий ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ являСтся классом. Договоримся Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ(regular objects) Ρ‚Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ классами Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ.

НСбольшая дСмонстрация, которая станСт Π»ΡƒΡ‡ΡˆΠ΅ понятна Ρ‡ΡƒΡ‚ΡŒ ΠΏΠΎΠ·ΠΆΠ΅.
Класс являСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ.
>>> class A ( object ):
. pass
.

>>> isinstance (A, object )
True

Число β€” это Ρ‚ΠΎΠΆΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚.

Класс β€” это класс (Ρ‚.Π΅. Ρ‚ΠΈΠΏ).

>>> isinstance (A, type )
True

А Π²ΠΎΡ‚ число классом (Ρ‚ΠΈΠΏΠΎΠΌ) Π½Π΅ являСтся. (Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ type Π±ΡƒΠ΄Π΅Ρ‚ пояснСно ΠΏΠΎΠ·ΠΆΠ΅)

Ну ΠΈ a β€” Ρ‚ΠΎΠΆΠ΅ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚.

>>> a = A()
>>> isinstance (a, A)
True
>>> isinstance (a, object )
True
>>> isinstance (a, type )
False

И Ρƒ A всСго ΠΎΠ΄ΠΈΠ½ прямой Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ класс β€” object.

Π§Π°ΡΡ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ Π΄Π°ΠΆΠ΅ ΠΌΠ΅Π½ΡΡ‚ΡŒ:

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ getattr ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ доступ ΠΊ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌ класса:

Поиск Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² Π² ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅

Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ΅Π½ΠΈΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ поиска выглядит Ρ‚Π°ΠΊ: сначала ищСтся Π² __dict__ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΏΠΎΡ‚ΠΎΠΌ ΠΈΠ΄Π΅Ρ‚ поиск ΠΏΠΎ __dict__ словарям класса ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ опрСдСляСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ __class__) ΠΈ __dict__ Π΅Π³ΠΎ Π±Π°Π·ΠΎΠ²Ρ‹Ρ… классов Π² рСкурсивном порядкС.

Π’.ΠΊ. Π² ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°Ρ… a ΠΈ b Π½Π΅Ρ‚ Π² __dict__ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ‘qux’, Ρ‚ΠΎ поиск продолТаСтся Π²ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΌ словарС __dict__ ΠΈΡ… Ρ‚ΠΈΠΏΠ° (класса), Π° ΠΏΠΎΡ‚ΠΎΠΌ ΠΏΠΎ __dict__ словарям Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ порядкС:

МСняСм Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ qux Ρƒ класса A. И соотвСтствСнно Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ значСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ экзСмпляры класса A β€” a ΠΈ b:

Π’ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅ Π² Ρ€Π°Π½Ρ‚Π°ΠΉΠΌΠ΅ ΠΊ классу ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄:

И доступ ΠΊ Π½Π΅ΠΌΡƒ появится Ρƒ экзСмпляров:

Π’ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ с Π»ΡŽΠ±Ρ‹ΠΌΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ, ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ класса, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠ»Π°ΡΡΠΎΠ²ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ qux:

Она ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒΡΡ ΠΈΠ· __dict__

И доступ Ρƒ экзСмляров ΠΏΡ€ΠΎΠΏΠ°Π΄Π΅Ρ‚.

Π£ классов ΠΏΠΎΡ‡Ρ‚ΠΈ Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ поиск Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ², ΠΊΠ°ΠΊ ΠΈ Ρƒ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Π½ΠΎ Π΅ΡΡ‚ΡŒ отличия: поиск начинаСтся с собствСнного __dict__ словаря, Π° ΠΏΠΎΡ‚ΠΎΠΌ ΠΈΠ΄Π΅Ρ‚ поиск ΠΏΠΎ __dict__ словарям супСрклассов (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ хранятся Π² __bases__) ΠΏΠΎ ΠΎΠΏΡ€Π΅Π΄Π»Π΅Π½Π½ΠΎΠΌΡƒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡƒ, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΠΎ классу Π² __class__ ΠΈ Π΅Π³ΠΎ супСрклассах. (ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎΠ± этом ΠΏΠΎΠ·ΠΆΠ΅).

Cсылки

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ

[1] О __module__ ΠΈ __doc__ для простоты излоТСния ΠΏΠΎΠΊΠ° Π·Π°Π±ΡƒΠ΄Π΅ΠΌ. ΠŸΠΎΠ»Π½Ρ‹ΠΉ список Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² класса ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ

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

Класс ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² Python

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

Python β€” это ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΈ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ язык программирования.

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ

Β«ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉΒ» ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² сторонних скриптах.

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ

Β«ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉΒ» ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ классов. Π•ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ классы, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ собой ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΡ‹ для Π±ΡƒΠ΄ΡƒΡ‰ΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

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

Бинтаксис для написания Π½ΠΎΠ²ΠΎΠ³ΠΎ класса:

Атрибут:

Атрибут β€” это элСмСнт класса. НапримСр, Ρƒ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ° Ρ‚Π°ΠΊΠΈΡ… 2: ΡˆΠΈΡ€ΠΈΠ½Π° ( width ) ΠΈ высота ( height ).

ΠœΠ΅Ρ‚ΠΎΠ΄:

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

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

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅

Π§Ρ‚ΠΎ происходит ΠΏΡ€ΠΈ создании ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ класса?

ΠŸΡ€ΠΈ создании ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° класса Rectangle запускаСтся конструктор Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ класса, ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ значСния Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². Как Π½Π° этом ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ:

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ с Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ

Π’ Π΄Ρ€ΡƒΠ³ΠΈΡ… языках программирования конструкторов ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ нСсколько. Π’ Python β€” Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½. Но этот язык Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

ВсС Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π΄ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² со значСниями ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅

Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²

Π’ Python ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, созданный с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ конструктора, Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ΅ мСсто Π² памяти. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Ρƒ Π½Π΅Π³ΠΎ Π΅ΡΡ‚ΡŒ Ρ‚ΠΎΡ‡Π½Ρ‹ΠΉ адрСс.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅

Атрибуты

Π’ Python Π΅ΡΡ‚ΡŒ Π΄Π²Π° ΠΏΠΎΡ…ΠΎΠΆΠΈΡ… понятия, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π° самом Π΄Π΅Π»Π΅ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ:

Π‘Ρ‚ΠΎΠΈΡ‚ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅:

Атрибут

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, созданныС ΠΎΠ΄Π½ΠΈΠΌ ΠΈ Ρ‚Π΅ΠΌ ΠΆΠ΅ классом, Π±ΡƒΠ΄ΡƒΡ‚ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ мСста Π² памяти, Π° ΠΈΡ… Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ с Β«ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈΒ» β€” ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° Ρ€Π°Π·Π½Ρ‹Π΅ адрСса. НапримСр:

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅

Атрибуты Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ доступ ΠΊ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Β«Ρ‚ΠΎΡ‡ΠΊΠ°Β» (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, player1.name ). Но Python ΡƒΠΌΠ΅Π΅Ρ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ это ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Π€ΡƒΠ½ΠΊΡ†ΠΈΡΠžΠΏΠΈΡΠ°Π½ΠΈΠ΅
getattr (obj, name[,default])Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° ΠΈΠ»ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Ссли ΠΏΠ΅Ρ€Π²ΠΎΠ΅ Π½Π΅ Π±Ρ‹Π»ΠΎ ΡƒΠΊΠ°Π·Π°Π½ΠΎ
hasattr (obj, name)ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅Ρ‚ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° β€” Π±Ρ‹Π» Π»ΠΈ ΠΎΠ½ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ Β«nameΒ»
setattr (obj, name, value)Π—Π°Π΄Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°. Если Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° Π½Π΅ сущСствуСт, создаСт Π΅Π³ΠΎ
delattr (obj, name)УдаляСт Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚

ВстроСнныС Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ класса

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ класса β€” Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ элСмСнты ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ ΠΊ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌ самого языка Python. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΎΠ½ΠΈ Π·Π°ΠΈΠΌΡΡ‚Π²ΡƒΡŽΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹:

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

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ класса Π² Python β€” это Ρ‚ΠΎ ΠΆΠ΅ самоС, Ρ‡Ρ‚ΠΎ Field Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… языках, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Java ΠΈΠ»ΠΈ Π‘#. ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊ Π½ΠΈΠΌ доступ ΠΌΠΎΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΈΠΌΠ΅Π½ΠΈ класса ΠΈΠ»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

Для получСния доступа ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ класса Π»ΡƒΡ‡ΡˆΠ΅ всС-Ρ‚Π°ΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ имя класса, Π° Π½Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. Π­Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ ΠΏΡƒΡ‚Π°Ρ‚ΡŒ Β«ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ класса» ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹.

Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ класса Π΅ΡΡ‚ΡŒ свой адрСс Π² памяти. И ΠΎΠ½ доступСн всСм ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ класса.
Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅

Π‘ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ класса ΠΈΠ»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°

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

ΠžΡΠ½ΠΎΠ²Ρ‹ ООП Π² Python β€” классы, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Абстракция

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

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

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

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

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

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

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

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

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

Класс

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

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

class SimpleClass: pass

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅

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

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

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

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅

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

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

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

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

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

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

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

Паблик VK

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

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

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

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

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

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

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

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

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

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

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

Класс

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

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

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

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

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

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

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