ΠΠ΅ΡΠΎΠ΄Ρ python: Π ΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΏΠΎ ΠΌΠ°Π³ΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌ Π² ΠΠΈΡΠΎΠ½Π΅ / Π₯Π°Π±Ρ
ΠΠ»Π°ΡΡΡ, ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π² Python Π΄Π»Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΡ ~ PythonRu
ΠΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ ΡΡΠΎΠΊ: ΠΠ°ΡΡΠΈΠ²Ρ
Python β ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠΎΡΡΠΈ Π²ΡΠ΅ Π² Python β ΡΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡ Ρ Π΅Π³ΠΎ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌΠΈ ΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ. ΠΠ»Π°ΡΡ ΠΏΠΎΡ ΠΎΠΆ Π½Π° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΈΠ»ΠΈ ββΠΏΡΠΎΠ΅ΠΊΡββ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ².
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠ°
ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΠΊΠ»Π°ΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ class
.
Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΊΠ»Π°ΡΡ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ MyClass
ΠΈ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎΠΌ x
:
class MyClass:
x = 5
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ°
Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ»Π°ΡΡ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ myClass
Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ².
Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ p1
, ΠΈ Π²ΡΠ²Π΅Π΄Π΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ x
:
p1 = MyClass()
print(p1.x)
ΠΡΠ²ΠΎΠ΄:
5
Π€ΡΠ½ΠΊΡΠΈΡ init
ΠΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠ΅ Π²ΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ β ΡΡΠΎ ΠΊΠ»Π°ΡΡΡ ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π² ΠΈΡ
ΠΏΡΠΎΡΡΠ΅ΠΉΡΠ΅ΠΉ ΡΠΎΡΠΌΠ΅ ΠΈ Π½Π΅ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ»Π΅Π·Π½Ρ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ
.
Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ½ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠΎΠ², Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ½ΡΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ __init__
.
Π£ Π²ΡΠ΅Ρ
ΠΊΠ»Π°ΡΡΠΎΠ² Π΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ __init__()
, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΠ΅Π³Π΄Π° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ __init__()
Π΄Π»Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΈΡ
ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ, ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°.
ΠΠ»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΊΠ»Π°ΡΡΠ° ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Person
, Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ __init__()
, ΡΡΠΎ Π±Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ ΠΈΠΌΠ΅Π½ΠΈ ΠΈ Π²ΠΎΠ·ΡΠ°ΡΡΠ°:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
p1 = Person("ΠΠ°ΡΠΈΠ»ΠΈΠΉ", 36)
print(p1.name)
print(p1.age)
ΠΡΠ²ΠΎΠ΄:
ΠΠ°ΡΠΈΠ»ΠΈΠΉ
36
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π€ΡΠ½ΠΊΡΠΈΡ __init__()
Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠ»Π°ΡΡΠ° Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°.
ΠΠ΅ΡΠΎΠ΄Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ²
ΠΠΎΠ΄ΠΏΠΈΡΡΠ²Π°ΠΉΡΠ΅ΡΡ Π½Π° ΡΠ΅Π»Π΅Π³ΡΠ°ΠΌ ΠΊΠ°Π½Π°Π»Ρ
ΠΠ±ΡΠ΅ΠΊΡΡ ΡΠ°ΠΊΠΆΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΠΌΠ΅ΡΠΎΠ΄Ρ. ΠΠ΅ΡΠΎΠ΄Ρ Π² ΠΎΠ±ΡΠ΅ΠΊΡΠ°Ρ
β ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°ΡΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΌΠ΅ΡΠΎΠ΄ Π² ΠΊΠ»Π°ΡΡΠ΅ Person
.
ΠΠΎΠ±Π°Π²ΠΈΠΌ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΠΏΡΠΈΠ²Π΅ΡΡΡΠ²ΠΈΠ΅, ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΠΌ Π΅Π΅:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def myfunc(self):
print("ΠΡΠΈΠ²Π΅Ρ, ΠΌΠ΅Π½Ρ Π·ΠΎΠ²ΡΡ " + self.name)
p1 = Person("ΠΠ°ΡΠΈΠ»ΠΈΠΉ", 36)
p1.myfunc()
ΠΡΠ²ΠΎΠ΄:
ΠΡΠΈΠ²Π΅Ρ, ΠΌΠ΅Π½Ρ Π·ΠΎΠ²ΡΡ ΠΠ°ΡΠΈΠ»ΠΈΠΉ
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ self
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ self
ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΡΠ»ΠΊΠΎΠΉ Π½Π° ΡΠ°ΠΌ ΠΊΠ»Π°ΡΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ, ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°ΡΠΈΠΌ ΠΊΠ»Π°ΡΡΡ.
ΠΠ³ΠΎ Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π½Π°Π·ΡΠ²Π°ΡΡ self
, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°Π·ΡΠ²Π°ΡΡ Π΅Π³ΠΎ ΠΊΠ°ΠΊ Ρ
ΠΎΡΠΈΡΠ΅, Π½ΠΎ ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΏΠ΅ΡΠ²ΡΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ Π»ΡΠ±ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Π² ΠΊΠ»Π°ΡΡΠ΅.
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΠ»ΠΎΠ²Π° mysillyobject
ΠΈ abc
Π²ΠΌΠ΅ΡΡΠΎ self
:
class Person:
def __init__(mysillyobject, name, age):
mysillyobject.name = name
mysillyobject.age = age
def myfunc(abc):
print("ΠΡΠΈΠ²Π΅Ρ, ΠΌΠ΅Π½Ρ Π·ΠΎΠ²ΡΡ " + abc.name)
p1 = Person("ΠΠ°ΡΠΈΠ»ΠΈΠΉ", 36)
p1.myfunc()
ΠΡΠ²ΠΎΠ΄:
ΠΡΠΈΠ²Π΅Ρ, ΠΌΠ΅Π½Ρ Π·ΠΎΠ²ΡΡ ΠΠ°ΡΠΈΠ»ΠΈΠΉ
ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠ²ΠΎΠΉΡΡΠ² ΠΎΠ±ΡΠ΅ΠΊΡΠ°
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ.
ΠΠ·ΠΌΠ΅Π½ΠΈΠΌ Π²ΠΎΠ·ΡΠ°ΡΡ ΠΎΡ p1
Π½Π° 40:
p1.age = 40
ΠΠΎΠ»ΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ class Π² Python 3: ΠΡΠΈΠΌΠ΅ΡΡ ΡΠ°Π±ΠΎΡΡ Ρ ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ Π² Python
Π£Π΄Π°Π»ΠΈΡΡ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΎΠ±ΡΠ΅ΠΊΡΠ°
Π‘Π²ΠΎΠΉΡΡΠ²Π° ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π°Π»ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π° del
del p1.age
Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ²
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΄Π°Π»ΠΈΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ del
.
del p1
ΠΠ°Π»Π΅Π΅: ΠΡΠ΅ΡΠ°ΡΠΎΡΡ Python
ΠΠΎΡΡΠ΄ΠΎΠΊ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π² Python / Π₯Π°Π±Ρ
Π ΡΡΠΎΠΉ Π·Π°ΠΌΠ΅ΡΠΊΠ΅ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΡΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌ MRO Π‘3 ΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ. Π₯ΠΎΡΡ ΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π½Π΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°ΡΡΡΡ ΡΠ°ΠΌΠΊΠ°ΠΌΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ°, Ρ Π°ΠΊΡΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π» ΡΠ²ΠΎΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΠΈΡΠΎΠ½Π΅. Π ΠΊΠΎΠ½ΡΠ΅ ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½ ΡΠΏΠΈΡΠΎΠΊ ΠΏΠΎΠ»Π΅Π·Π½ΡΡ ΡΡΡΠ»ΠΎΠΊ ΠΏΠΎ Π΄Π°Π½Π½ΠΎΠΉ ΡΠ΅ΠΌΠ΅.
ΠΠΎΡΡΠ΄ΠΎΠΊ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² (method resolution order) ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΠΈΡΠΎΠ½Ρ Π²ΡΡΡΠ½ΠΈΡΡ, ΠΈΠ· ΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°-ΠΏΡΠ΅Π΄ΠΊΠ° Π½ΡΠΆΠ½ΠΎ Π²ΡΠ·ΡΠ²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄, Π΅ΡΠ»ΠΈ ΠΎΠ½ Π½Π΅ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π² ΠΊΠ»Π°ΡΡΠ΅-ΠΏΠΎΡΠΎΠΌΠΊΠ΅. ΠΡΠ»ΠΈ Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΌΠΊΠ° Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΏΡΠ΅Π΄ΠΎΠΊ, ΡΠΎ Π·Π°Π΄Π°ΡΠ° ΡΡΠΈΠ²ΠΈΠ°Π»ΡΠ½Π°. ΠΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π²ΠΎΡΡ ΠΎΠ΄ΡΡΠΈΠΉ ΠΏΠΎΠΈΡΠΊ ΠΏΠΎ Π²ΡΠ΅ΠΉ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΠΈ. ΠΡΠ»ΠΈ ΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅, ΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠΎΠ»ΠΊΠ½ΡΡΡΡΡ ΡΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠΏΠΈΡΠ°Π½Ρ Π½ΠΈΠΆΠ΅.
Π ΡΡΠ°ΡΡΡ Π²Π΅ΡΡΠΈΡΡ ΠΠΈΡΠΎΠ½Π° ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π±ΡΠ» Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΡΠΌ: ΠΏΠΎΠΈΡΠΊ Π²ΡΠ»ΡΡ Π²ΠΎ Π²ΡΠ΅Ρ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΈΡ ΠΊΠ»Π°ΡΡΠ°Ρ ΡΠ»Π΅Π²Π° Π½Π°ΠΏΡΠ°Π²ΠΎ Π½Π° ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΡ Π³Π»ΡΠ±ΠΈΠ½Ρ. Π’.Π΅. Π΅ΡΠ»ΠΈ Ρ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ Π½Π΅ Π±ΡΠ»ΠΎ Π½ΡΠΆΠ½ΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π°, Π½ΠΎ Π±ΡΠ»ΠΈ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΠΈ, ΡΠΎ ΠΏΠΎΠΈΡΠΊ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠ»ΡΡ Π² Π½ΠΈΡ ΠΏΠΎ ΡΠ΅ΠΌ ΠΆΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌ. ΠΠ»Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ° Π²ΠΎΠ·ΠΌΡΠΌ ΡΡΡΡΠΊΡΡΡΡ:
A C | | B D \ / E
ΠΡΠΈ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΈ ΠΊ ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° ΠΊΠ»Π°ΡΡΠ° E ΡΠ°ΠΊΠΎΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΏΡΠΎΠΈΠ·Π²ΡΠ» Π±Ρ ΠΏΠΎΠΈΡΠΊ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ Π² ΠΊΠ»Π°ΡΡΠ°Ρ E, B, A, D ΠΈ C. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΏΠΎΠΈΡΠΊ Π²ΡΠ»ΡΡ ΡΠ½Π°ΡΠ°Π»Π° Π² ΠΏΠ΅ΡΠ²ΠΎΠΌ ΠΊΠ»Π°ΡΡΠ΅-ΡΠΎΠ΄ΠΈΡΠ΅Π»Π΅ ΠΈ Π²ΠΎ Π²ΡΠ΅Ρ Π΅Π³ΠΎ ΠΏΡΠ΅Π΄ΠΊΠ°Ρ , Π·Π°ΡΠ΅ΠΌ Π²ΠΎ Π²ΡΠΎΡΠΎΠΌ ΠΊΠ»Π°ΡΡΠ΅-ΡΠΎΠ΄ΠΈΡΠ΅Π»Π΅ ΡΠΎ Π²ΡΠ΅ΠΌΠΈ ΠΏΡΠ΅Π΄ΠΊΠ°ΠΌΠΈ ΠΈ Ρ. Π΄. ΠΡΠΎΡ ΡΠΏΠΎΡΠΎΠ± Π½Π΅ Π²ΡΠ·ΡΠ²Π°Π» ΠΎΡΠΎΠ±ΡΡ Π½Π°ΡΠ΅ΠΊΠ°Π½ΠΈΠΉ, ΠΏΠΎΠΊΠ° Ρ ΠΊΠ»Π°ΡΡΠΎΠ² Π½Π΅ Π±ΡΠ»ΠΎ ΠΎΠ±ΡΠ΅Π³ΠΎ ΠΏΡΠ΅Π΄ΠΊΠ°. ΠΠ΄Π½Π°ΠΊΠΎ, Π½Π°ΡΠΈΠ½Π°Ρ Ρ Π²Π΅ΡΡΠΈΠΈ 2.2, ΠΏΠΎΡΠ²ΠΈΠ»ΡΡ Π±Π°Π·ΠΎΠ²ΡΠΉ ΠΊΠ»Π°ΡΡ object, ΠΎΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π»ΠΎΡΡ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ Π²ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ ΠΊΠ»Π°ΡΡΡ. ΠΠ°ΡΠ΅ΠΌ Π΅Π³ΠΎ Π²Π²Π΅Π»ΠΈ β ΡΠ΅ΠΌΠ° Π΄Π»Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΉ ΡΡΠ°ΡΡΠΈ. ΠΠΎΠΆΠ°Π»ΡΠΉ, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠΌ ΡΠ°ΠΊΡΠΎΡΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π·Π²Π°ΡΡ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΌΠ΅ΡΠ°-Π΄Π°Π½Π½ΡΡ . ΠΠ°ΡΠΈΠ½Π°Ρ Ρ Π²Π΅ΡΡΠΈΠΈ 3.0, ΡΡΠ°ΡΡΠ΅ ΠΊΠ»Π°ΡΡΡ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ, Π° Π²ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ ΠΊΠ»Π°ΡΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΡΡ ΠΎΡ ΠΊΠ»Π°ΡΡΠ° object.
ΠΡΠΎ ΠΏΠΎΡΠΎΠ΄ΠΈΠ»ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Β«ΡΠΎΠΌΠ±ΠΎΠ²ΠΈΠ΄Π½ΠΎΠΉ ΡΡΡΡΠΊΡΡΡΡΒ» (Β«diamond diagramΒ»).
object / \ A B \ / C
ΠΡΠ»ΠΈ Ρ Π½Π°Ρ Π΅ΡΡΡ ΠΊΠ»Π°ΡΡΡ A ΠΈ B, ΠΎΡ ΠΊΠΎΡΠΎΡΡΡ Π½Π°ΡΠ»Π΅Π΄ΡΠ΅ΡΡΡ ΠΊΠ»Π°ΡΡ C, ΡΠΎ ΠΏΡΠΈ ΠΏΠΎΠΈΡΠΊΠ΅ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΏΠΎ ΡΡΠ°ΡΠΎΠΌΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ (C, A, object, B) ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ, ΡΡΠΎ Π΅ΡΠ»ΠΈ ΠΌΠ΅ΡΠΎΠ΄ Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½ Π² ΠΊΠ»Π°ΡΡΠ°Ρ C ΠΈ A ΠΎΠ½ Π±ΡΠ΄Π΅Ρ ΠΈΠ·Π²Π»Π΅ΡΡΠ½ ΠΈΠ· object, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΠΎΠ½ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½ Π² B. ΠΡΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΠ΅ Π½Π΅ΡΠ΄ΠΎΠ±ΡΡΠ²Π°, Ρ.ΠΊ. Π² object ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΌΠ°Π³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΡΠΈΠΏΠ° __init__, __str__ ΠΈ Ρ.ΠΏ. ΠΠΎ Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ object Π·Π°ΠΌΠ΅Π½ΠΈΡΡ Π½Π° Π½Π΅ΠΊΠΈΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΊΠ»Π°ΡΡ D, ΡΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΎΡΡΠ°Π½Π΅ΡΡΡ β ΠΌΠ΅Π½Π΅Π΅ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ°-ΠΏΡΠ΅Π΄ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΡΠ°Π±ΠΎΡΠ°ΡΡ Π²ΠΌΠ΅ΡΡΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΊΠ»Π°ΡΡΠ°-ΠΏΠΎΡΠΎΠΌΠΊΠ°.
ΠΡΠ°ΠΊ, Ρ Π½Π°Ρ Π½Π° ΡΡΠΊΠ°Ρ Π΅ΡΡΡ ΡΠ°ΠΌ ΠΊΠ»Π°ΡΡ, ΡΠΏΠΈΡΠΎΠΊ Π²ΡΠ΅Ρ Π΅Π³ΠΎ ΠΏΡΠ΅Π΄ΠΊΠΎΠ² ΠΈ ΡΠ²ΡΠ·Π΅ΠΉ ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΈΠΌΠΈ. ΠΠ· ΡΡΠΈΡ Π΄Π°Π½Π½ΡΡ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΡΡΡΠΎΠΈΡΡ ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ ΠΊΠ»Π°ΡΡΠΎΠ², Π² ΠΊΠΎΡΠΎΡΡΡ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡΡ ΠΏΠΎΠΈΡΠΊ ΠΌΠ΅ΡΠΎΠ΄Π° ΡΠ»Π΅Π²Π° Π½Π°ΠΏΡΠ°Π²ΠΎ. Π’Π°ΠΊΠΎΠΉ ΡΠΏΠΈΡΠΎΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ Π»ΠΈΠ½Π΅Π°ΡΠΈΠ·Π°ΡΠΈΠ΅ΠΉ ΠΊΠ»Π°ΡΡΠ°. ΠΠ»Ρ ΠΏΡΠΎΡΡΠΎΡΡ Π²ΠΎΠ·ΡΠΌΠ΅ΠΌ ΡΡΡΡΠΊΡΡΡΡ:
object | A | B
Π’ΠΎΠ³Π΄Π° Π»ΠΈΠ½Π΅Π°ΡΠΈΠ·Π°ΡΠΈΠ΅ΠΉ Π΄Π»Ρ ΠΊΠ»Π°ΡΡΠ° B Π±ΡΠ΄Π΅Ρ ΡΠΏΠΈΡΠΎΠΊ [B, A, object]. Π’.Π΅. ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ B().something() ΠΌΠ΅ΡΠΎΠ΄ ΡΠ½Π°ΡΠ°Π»Π° Π±ΡΠ΄Π΅Ρ ΠΈΡΠΊΠ°ΡΡΡΡ Π² ΠΊΠ»Π°ΡΡΠ΅ B. ΠΡΠ»ΠΈ ΠΎΠ½ ΡΠ°ΠΌ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½, ΡΠΎ ΠΏΠΎΠΈΡΠΊ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡΡ Π² ΠΊΠ»Π°ΡΡΠ΅ A. ΠΡΠ»ΠΈ Π΅Π³ΠΎ Π½Π΅Ρ ΠΈ ΡΠ°ΠΌ, ΡΠΎ ΠΏΠΎΠΈΡΠΊ Π·Π°Π²Π΅ΡΡΠΈΡΡΡ Π² ΠΊΠ»Π°ΡΡΠ΅ object. ΠΠ΅ΡΠ΅Π±ΡΠ°Π² Π²ΡΠ΅ ΠΊΠ»Π°ΡΡΡ ΠΈΠ· Π»ΠΈΠ½Π΅Π°ΡΠΈΠ·Π°ΡΠΈΠΈ ΠΈ Π½Π΅ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ² Π½ΡΠΆΠ½ΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π°, ΠΠΈΡΠΎΠ½ Π²ΡΠΊΠΈΠ½Π΅Ρ ΠΎΡΠΈΠ±ΠΊΡ Attribute Error.
ΠΠ»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΠΎΠΌΠ±ΠΎΠ²ΠΈΠ΄Π½ΠΎΠΉ ΡΡΡΡΠΊΡΡΡΡ Π»ΠΈΠ½Π΅Π°ΡΠΈΠ·Π°ΡΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΠΌΠΎΠ½ΠΎΡΠΎΠ½Π½ΠΎΠΉ. ΠΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ Π΅ΡΠ»ΠΈ Π² Π»ΠΈΠ½Π΅Π°ΡΠΈΠ·Π°ΡΠΈΠΈ Π½Π΅ΠΊΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° C ΠΊΠ»Π°ΡΡ A ΡΠ»Π΅Π΄ΡΠ΅Ρ Π·Π° ΠΊΠ»Π°ΡΡΠΎΠΌ B (ΠΎΠ½Π° ΠΈΠΌΠ΅Π΅Ρ Π²ΠΈΠ΄ [C, β¦, B, β¦, A]), ΡΠΎ ΠΈ Π΄Π»Ρ Π»ΡΠ±ΠΎΠ³ΠΎ Π΅Π³ΠΎ ΠΏΠΎΡΠΎΠΌΠΊΠ° D ΠΊΠ»Π°ΡΡ B Π±ΡΠ΄Π΅Ρ ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ Π·Π° A Π² Π΅Π³ΠΎ Π»ΠΈΠ½Π΅Π°ΡΠΈΠ·Π°ΡΠΈΠΈ (ΠΎΠ½Π° Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡ Π²ΠΈΠ΄ [D, β¦, C, β¦, B, β¦, A]). ΠΠ°ΠΊ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΈΠ΄Π΅ΡΡ, ΡΡΠ°ΡΡΠΉ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π½Π΅ ΠΌΠΎΠ½ΠΎΡΠΎΠ½Π΅Π½, Ρ.ΠΊ. Π² ΡΠ»ΡΡΠ°Π΅ ΡΠΎΠΌΠ±ΠΎΠ²ΠΈΠ΄Π½ΠΎΠΉ ΡΡΡΡΠΊΡΡΡΡ Π΄Π»Ρ ΠΊΠ»Π°ΡΡΠ° A Π»ΠΈΠ½Π΅Π°ΡΠΈΠ·Π°ΡΠΈΡ Π΅ΡΡΡ [A, object], Π΄Π»Ρ ΠΊΠ»Π°ΡΡΠ° B β [B, object], Π½ΠΎ Π΄Π»Ρ ΠΊΠ»Π°ΡΡΠ° C β [C, A, object, B], ΡΡΠΎ Π½Π°ΡΡΡΠ°Π΅Ρ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ ΠΌΠΎΠ½ΠΎΡΠΎΠ½Π½ΠΎΡΡΠΈ ΠΏΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ ΠΊ ΠΊΠ»Π°ΡΡΡ B.
ΠΠ»Ρ ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΠ΅Π½ΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ²Ρ ΠΌΠΎΠ½ΠΎΡΠΎΠ½Π½ΠΎΡΡΠΈ Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΠΎΠ΄ΠΎΠΉΠ΄ΡΡ Π΄Π²Π΅ Π»ΠΈΠ½Π΅Π°ΡΠΈΠ·Π°ΡΠΈΠΈ: [C, A, B, object] ΠΈ [C, B, A, object]. ΠΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ ΠΎΠ½ΠΈ ΠΎΠ±Π΅ Π½Π΅ Π½Π°ΡΡΡΠ°ΡΡ ΠΌΠΎΠ½ΠΎΡΠΎΠ½Π½ΠΎΡΡΠΈ Π½ΠΈ Π² ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΈ ΠΊΠ»Π°ΡΡΠ° A (Ρ.ΠΊ. object ΡΠ»Π΅Π΄ΡΠ΅Ρ Π·Π° A Π² ΠΎΠ±ΠΎΠΈΡ ΡΠ»ΡΡΠ°ΡΡ ), Π½ΠΈ Π² ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΈ ΠΊΠ»Π°ΡΡΠ° B (Ρ.ΠΊ. object ΡΠ»Π΅Π΄ΡΠ΅Ρ Π·Π° B Π² ΠΎΠ±ΠΎΠΈΡ ΡΠ»ΡΡΠ°ΡΡ ). Π’Π°ΠΊ ΠΊΠ°ΠΊΡΡ ΠΈΠ· Π½ΠΈΡ Π²ΡΠ±ΡΠ°ΡΡ? Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΈΠ½ΡΡΠΈΡΠΈΠ²Π½ΠΎ-ΠΏΠΎΠ½ΡΡΠ½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± β ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠ° C. ΠΡΠ»ΠΈ ΠΊΠ»Π°ΡΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ ΠΊΠ°ΠΊ C(A, B), ΡΠΎ ΡΠ°Π·ΡΠΌΠ½ΠΎ Π±ΡΠ΄Π΅Ρ Π²Π·ΡΡΡ ΠΏΠ΅ΡΠ²ΡΡ Π»ΠΈΠ½Π΅Π°ΡΠΈΠ·Π°ΡΠΈΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π² Π½Π΅ΠΉ B ΡΠ»Π΅Π΄ΡΠ΅Ρ Π·Π° A. ΠΡΠ»ΠΈ ΠΊΠ»Π°ΡΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ ΠΊΠ°ΠΊ C(B, A), ΡΠΎ Π±ΡΠ΄Π΅Ρ Π»ΡΡΡΠ΅ Π²Π·ΡΡΡ Π²ΡΠΎΡΡΡ Π»ΠΈΠ½Π΅Π°ΡΠΈΠ·Π°ΡΠΈΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ A ΡΠ»Π΅Π΄ΡΠ΅Ρ Π·Π° B.
Π’Π°ΠΊΠΎΠΉ Π²ΡΠ±ΠΎΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΏΠΎΡΡΠ΄ΠΊΠΎΠΌ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΡΠ°ΡΡΠΈΠ½ΡΡΠ²Π° (local precedence ordering). Π‘Π²ΠΎΠΉΡΡΠ²ΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠ° Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΡΠ°ΡΡΠΈΠ½ΡΡΠ²Π° ΡΡΠ΅Π±ΡΠ΅Ρ ΡΠΎΠ±Π»ΡΠ΄Π΅Π½ΠΈΡ Π΄Π»Ρ ΠΊΠ»Π°ΡΡΠΎΠ²-ΡΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΉ Π² Π»ΠΈΠ½Π΅Π°ΡΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠ»Π°ΡΡΠ°-ΠΏΠΎΡΠΎΠΌΠΊΠ° ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΠΏΠΎΡΡΠ΄ΠΊΠ°, ΡΡΠΎ ΠΈ ΠΏΡΠΈ Π΅Π³ΠΎ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ ΠΊΠ»Π°ΡΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ ΠΊΠ°ΠΊ D(A, B, C), ΡΠΎ Π² Π»ΠΈΠ½Π΅Π°ΡΠΈΠ·Π°ΡΠΈΠΈ D ΠΊΠ»Π°ΡΡ A Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΡΠΎΡΡΡ ΡΠ°Π½ΡΡΠ΅ B, Π° ΠΊΠ»Π°ΡΡ B β ΡΠ°Π½ΡΡΠ΅ C.
ΠΠΎΠ΄Π²Π΅Π΄ΡΠΌ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΠ΅ ΠΈΡΠΎΠ³ΠΈ:
- Π»ΠΈΠ½Π΅Π°ΡΠΈΠ·Π°ΡΠΈΠ΅ΠΉ ΠΊΠ»Π°ΡΡΠ° Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΡΠΏΠΈΡΠΎΠΊ ΠΈΠ· ΡΠ°ΠΌΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° ΠΈ Π²ΡΠ΅Ρ Π΅Π³ΠΎ ΠΏΡΠ΅Π΄ΠΊΠΎΠ² (ΡΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΉ ΠΈ ΠΏΡΠΎΡΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΉ) Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΏΠΎ ΠΏΠΎΡΡΠ΄ΠΊΡ ΡΠ»Π΅Π²Π° Π½Π°ΠΏΡΠ°Π²ΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡΡ ΠΏΠΎΠΈΡΠΊ ΠΌΠ΅ΡΠΎΠ΄Π°.
- ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² (MRO) β ΡΡΠΎ ΡΠΏΠΎΡΠΎΠ±, Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π»ΠΈΠ½Π΅Π°ΡΠΈΠ·Π°ΡΠΈΡ ΠΊΠ»Π°ΡΡΠ°.
- ΠΌΠΎΠ½ΠΎΡΠΎΠ½Π½ΠΎΡΡΡ β ΡΡΠΎ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΡΠ΅Π±ΡΠ΅Ρ ΡΠΎΠ±Π»ΡΠ΄Π΅Π½ΠΈΡ Π² Π»ΠΈΠ½Π΅Π°ΡΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠ»Π°ΡΡΠ°-ΠΏΠΎΡΠΎΠΌΠΊΠ° ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΠΏΠΎΡΡΠ΄ΠΊΠ° ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠ»Π°ΡΡΠΎΠ²-ΠΏΡΠΎΡΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΉ, ΡΡΠΎ ΠΈ Π² Π»ΠΈΠ½Π΅Π°ΡΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠ»Π°ΡΡΠ°-ΡΠΎΠ΄ΠΈΡΠ΅Π»Ρ.
- ΠΏΠΎΡΡΠ΄ΠΎΠΊ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΡΠ°ΡΡΠΈΠ½ΡΡΠ²Π° β ΡΡΠΎ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΡΠ΅Π±ΡΠ΅Ρ ΡΠΎΠ±Π»ΡΠ΄Π΅Π½ΠΈΡ Π² Π»ΠΈΠ½Π΅Π°ΡΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠ»Π°ΡΡΠ°-ΠΏΠΎΡΠΎΠΌΠΊΠ° ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΠΏΠΎΡΡΠ΄ΠΊΠ° ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠ»Π°ΡΡΠΎΠ²-ΡΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΉ, ΡΡΠΎ ΠΈ Π² Π΅Π³ΠΎ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΈ.
ΠΡ Ρ ΠΎΡΠΈΠΌ ΡΡΠΎΠ±Ρ Π² Π½Π°ΡΠ΅ΠΉ Π»ΠΈΠ½Π΅Π°ΡΠΈΠ·Π°ΡΠΈΠΈ ΡΠΎΠ±Π»ΡΠ΄Π°Π»ΠΈΡΡ ΠΈ ΠΌΠΎΠ½ΠΎΡΠΎΠ½Π½ΠΎΡΡΡ, ΠΈ ΠΏΠΎΡΡΠ΄ΠΎΠΊ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΡΠ°ΡΡΠΈΠ½ΡΡΠ²Π°.
ΠΠ»Π³ΠΎΡΠΈΡΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ° ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² C3.
ΠΠ»Ρ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΡ ΡΠΊΠ°Π·Π°Π½Π½ΡΡ
Π²ΡΡΠ΅ ΡΠ΅Π»Π΅ΠΉ Π² ΠΠΈΡΠΎΠ½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌ C3. ΠΠ½ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΡΠΎΡΡ, ΠΎΠ΄Π½Π°ΠΊΠΎ Π΄Π»Ρ Π»ΡΡΡΠ΅Π³ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ Π²Π²Π΅Π΄ΡΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΡΠ»ΠΎΠ²Π½ΡΠ΅ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΡ:
[C1, C2, β¦ CN] β ΡΠΏΠΈΡΠΎΠΊ ΠΈΠ· ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² C1, C2, β¦ CN. Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, [Π‘] β ΡΠΏΠΈΡΠΎΠΊ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° C.
L[C] β Π»ΠΈΠ½Π΅Π°ΡΠΈΠ·Π°ΡΠΈΡ ΠΊΠ»Π°ΡΡΠ° C. ΠΠ°ΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡΡ, ΡΡΠΎ Π»ΡΠ±Π°Ρ Π»ΠΈΠ½Π΅Π°ΡΠΈΠ·Π°ΡΠΈΡ Π΅ΡΡΡ ΡΠΏΠΈΡΠΎΠΊ ΠΏΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ.
merge(L[C1], L[C2], β¦, L[CN]) β ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π»ΠΈΠ½Π΅Π°ΡΠΈΠ·Π°ΡΠΈΠΉ L[C1], L[C2], β¦, L[CN] Π² ΡΠΏΠΈΡΠΎΠΊ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°. ΠΠΎ ΡΡΡΠΈ, ΡΡΠΎΡ Π°Π»Π³ΠΎΡΠΈΡΠΌ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΏΠΎΡΡΠ΄ΠΎΡΠΈΡΡ Π²ΡΠ΅ ΠΊΠ»Π°ΡΡΡ ΠΈΠ· L[C1], L[C2], β¦, L[CN] ΠΈ ΠΈΡΠΊΠ»ΡΡΠΈΡΡ Π΄ΡΠ±Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠΎΠ² Π² ΠΈΡΠΎΠ³ΠΎΠ²ΠΎΠΌ ΡΠΏΠΈΡΠΊΠ΅.
ΠΠ»Π³ΠΎΡΠΈΡΠΌ C3 ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΈΠ· ΡΠ΅Π±Ρ Π½Π°Π±ΠΎΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΠΏΡΠ°Π²ΠΈΠ»:
- ΠΠΈΠ½Π΅Π°ΡΠΈΠ·Π°ΡΠΈΡ ΠΊΠ»Π°ΡΡΠ° C Π΅ΡΡΡ ΠΎΠ΄Π½ΠΎΡΠ»Π΅ΠΌΠ΅Π½ΡΠ½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ ΠΈΠ· ΡΠ°ΠΌΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° C ΠΏΠ»ΡΡ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Π»ΠΈΠ½Π΅Π°ΡΠΈΠ·Π°ΡΠΈΠΉ Π΅Π³ΠΎ ΡΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΉ ΠΈ ΡΠΏΠΈΡΠΊΠ° Π²ΡΠ΅Ρ Π΅Π³ΠΎ ΡΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΉ. Π ΡΡΠ»ΠΎΠ²Π½ΡΡ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΡΡ ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°ΡΡ ΠΊΠ°ΠΊ L[C] = [C] + merge(L[C1], L[C2], β¦, L[CN], [C1, C2, β¦, CN]), Π΅ΡΠ»ΠΈ ΠΊΠ»Π°ΡΡ C Π±ΡΠ» ΠΎΠ±ΡΡΠ²Π»Π΅Π½ ΠΊΠ°ΠΊ class C(C1, C2, β¦, CN). ΠΠ°Π΄ΠΎ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ΠΊΠ°ΠΆΠ΄Π°Ρ Π»ΠΈΠ½Π΅Π°ΡΠΈΠ·Π°ΡΠΈΡ L[CX] Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ ΠΊΠ»Π°ΡΡΠ° CX, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ» Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΈΠΏΠΈΡΠ°Π½ Π² ΠΊΠΎΠ½Π΅Ρ ΡΠΏΠΈΡΠΊΠ° ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΊΠ°ΠΊ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΡΠΉ ΡΠΎΠ΄ΠΈΡΠ΅Π»Ρ ΠΊΠ»Π°ΡΡΠ° C. ΠΠ°ΡΠ΅ΠΌ ΡΡΠΎ ΡΠ΄Π΅Π»Π°Π½ΠΎ ΡΡΠ°Π½Π΅Ρ ΡΡΠ½ΠΎ Π΄Π°Π»Π΅Π΅.
- ΠΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Π»ΠΈΠ½Π΅Π°ΡΠΈΠ·Π°ΡΠΈΠΉ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
- ΠΠ΅ΡΡΡΡΡ Π½ΡΠ»Π΅Π²ΠΎΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΈΠ· ΠΏΠ΅ΡΠ²ΠΎΠΉ Π»ΠΈΠ½Π΅Π°ΡΠΈΠ·Π°ΡΠΈΠΈ (L[C1][0]).
- ΠΡΠΎΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΈΡΠ΅ΡΡΡ Π²ΠΎ Π²ΡΠ΅Ρ Π΄ΡΡΠ³ΠΈΡ Π»ΠΈΠ½Π΅Π°ΡΠΈΠ·Π°ΡΠΈΡΡ (ΠΎΡ L[C2] Π΄ΠΎ L[CN]).
- ΠΡΠ»ΠΈ ΡΡΠΎΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π½Π°ΠΉΠ΄Π΅Π½ Π³Π΄Π΅-ΡΠΎ Π²Π½Π΅ Π½Π°ΡΠ°Π»Π° ΡΠΏΠΈΡΠΊΠ° (L[CK][X] == L[C1][0], X != 0; ΠΏΠΎ ΡΡΡΠΈ ΡΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ L[C1][0] ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠΉΠΌ-ΡΠΎ ΠΏΡΠ΅Π΄ΠΊΠΎΠΌ), ΡΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡ ΠΊ ΠΏΠ΅ΡΠ²ΠΎΠΌΡ ΡΠ°Π³Ρ, Π±Π΅ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π½ΡΠ»Π΅Π²ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΈΠ· ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ Π»ΠΈΠ½Π΅Π°ΡΠΈΠ·Π°ΡΠΈΠΈ (L[C2][0]).
- ΠΡΠ»ΠΈ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π½ΠΈΠ³Π΄Π΅ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ Π² ΠΏΠΎΠ·ΠΈΡΠΈΠΈ ΠΎΡΠ»ΠΈΡΠ½ΠΎΠΉ ΠΎΡ Π½ΡΠ»Π΅Π²ΠΎΠΉ, ΡΠΎ ΠΎΠ½ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ Π² ΠΊΠΎΠ½Π΅Ρ ΠΈΡΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ° Π»ΠΈΠ½Π΅Π°ΡΠΈΠ·Π°ΡΠΈΠΈ ΠΈ ΡΠ΄Π°Π»ΡΠ΅ΡΡΡ ΠΈΠ· Π²ΡΠ΅Ρ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΠΌΡΡ ΡΠΏΠΈΡΠΊΠΎΠ² (ΠΎΡ L[C1] Π΄ΠΎ L[CN]; ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΠΊΠ»Π°ΡΡ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΡΡΠ΅ΡΠ°ΡΡΡΡ Π² ΠΈΡΠΎΠ³ΠΎΠ²ΠΎΠΌ ΡΠΏΠΈΡΠΊΠ΅ Π΄Π²Π°ΠΆΠ΄Ρ). ΠΡΠ»ΠΈ ΠΏΠΎΡΠ»Π΅ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΎΡΡΠ°Π»ΠΈΡΡ ΠΏΡΡΡΡΠ΅ ΡΠΏΠΈΡΠΊΠΈ β ΠΎΠ½ΠΈ ΠΈΡΠΊΠ»ΡΡΠ°ΡΡΡΡ ΠΈΠ· ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ. ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΏΠΎΠ²ΡΠΎΡΡΠ΅ΡΡΡ Ρ ΡΠ°ΠΌΠΎΠ³ΠΎ Π½Π°ΡΠ°Π»Π° (ΠΎΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° L[C1][0]), Π΅ΡΠ»ΠΈ ΠΎΠ½ Π΅ΡΡΡ. ΠΡΠ»ΠΈ Π΅Π³ΠΎ Π½Π΅Ρ β ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Π·Π°ΠΊΠΎΠ½ΡΠ΅Π½ΠΎ.
- ΠΡΠ»ΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌ Π΄ΠΎΡΡΠ» Π΄ΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° L[CN], Π½ΠΎ Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½ΡΠ»Π΅Π²ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π½Π΅ ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΡΠ΅Ρ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌ, ΡΠΎ Π»ΠΈΠ½Π΅Π°ΡΠΈΠ·Π°ΡΠΈΡ Π½Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π°.
Π§ΡΠΎΠ±Ρ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΡΡΠ°Π» ΠΏΠΎΠ½ΡΡΠ½Π΅Π΅, ΡΠ°Π·Π±Π΅ΡΡΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ². ΠΠ΅ΡΠ²ΡΠΌ Π΄Π΅Π»ΠΎΠΌ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΡΡΠΎ ΠΆΠ΅ ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ Ρ Π½Π°ΡΠ΅ΠΉ ΡΠΎΠΌΠ±ΠΎΠ²ΠΈΠ΄Π½ΠΎΠΉ ΡΡΡΡΠΊΡΡΡΠΎΠΉ. ΠΠ»Ρ Π½Π΅Ρ ΠΌΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ:
L[C] = [C] + merge(L[A], L[B], [A, B])
L[A] = [A] + merge(L[object], [object])
L[B] = [B] + merge(L[object], [object])
L[object] = [object] (Π²ΡΡΠΎΠΆΠ΄Π΅Π½Π½ΡΠΉ ΡΠ»ΡΡΠ°ΠΉ)
ΠΠ°ΠΈΠ±ΠΎΠ»ΡΡΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΠ΅Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΡΠΎΡΠ΅ΡΡ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ, ΡΠ°ΠΊ ΡΡΠΎ ΡΠ°Π·Π±Π΅ΡΡΠΌ Π΅Π³ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ. Π ΡΠ»ΡΡΠ°ΡΡ L[A] ΠΈ L[B] Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ merge(L[object], [object]) = merge([object], [object]) ΡΠ°ΡΠΊΡΡΠ²Π°Π΅ΡΡΡ ΡΡΠΈΠ²ΠΈΠ°Π»ΡΠ½ΠΎ. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΈ ΠΏΠ΅ΡΠ²ΡΠΉ ΠΈ Π²ΡΠΎΡΠΎΠΉ ΡΠΏΠΈΡΠΊΠΈ ΡΠΎΡΡΠΎΡΡ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° object, ΠΏΠΎ ΠΏΡΠ½ΠΊΡΡ 4 ΠΏΡΠ°Π²ΠΈΠ»Π° ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ Π±ΡΠ΄Π΅Ρ [object].
Π’Π΅ΠΏΠ΅ΡΡ ΡΠ°Π·Π±Π΅ΡΡΠΌ L[C] = [C] + merge(L[A], L[B], [A, B]) = [C] + merge([A, object], [B, object], [A, B]). Π Π°ΡΠΏΠΈΡΠ΅ΠΌ Π½Π°ΡΠ΅ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌ C3:
- ΠΠΎΠ·ΡΠΌΠ΅ΠΌ Π½ΡΠ»Π΅Π²ΠΎΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ° β A.
- ΠΠΎΠΈΡΠ΅ΠΌ Π΅Π³ΠΎ Π²ΠΎ Π²ΡΠ΅Ρ ΠΏΡΠΎΡΠΈΡ ΡΠΏΠΈΡΠΊΠ°Ρ , Ρ.Π΅. Π² [B, object] ΠΈ [A, B].
- ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΊΠ»Π°ΡΡ A Π½Π΅ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ Π² ΡΠΏΠΈΡΠΊΠ΅ [B, object], Π° Π² ΡΠΏΠΈΡΠΊΠ΅ [A, B] ΡΠ²Π»ΡΠ΅ΡΡΡ Π½ΡΠ»Π΅Π²ΡΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ, ΡΠΎ ΠΌΡ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Π΅Π³ΠΎ Π² ΠΈΡΠΎΠ³ΠΎΠ²ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ Π»ΠΈΠ½Π΅Π°ΡΠΈΠ·Π°ΡΠΈΠΈ L = [] + [A] = [A]. ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡ A Π½ΡΠΆΠ½ΠΎ ΡΠ΄Π°Π»ΠΈΡΡ ΠΈΠ·ΠΎ Π²ΡΠ΅Ρ ΡΠΏΠΈΡΠΊΠΎΠ² Π² ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΈ. ΠΠΎΠ»ΡΡΠΈΠΌ L[C] = [C] + [A] + merge([object], [B, object], [B]).
- Π‘Π½ΠΎΠ²Π° Π²ΠΎΠ·ΡΠΌΡΠΌ Π½ΡΠ»Π΅Π²ΠΎΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ° β object.
- ΠΠΎΠΈΡΠ΅ΠΌ Π΅Π³ΠΎ Π²ΠΎ Π²ΡΠ΅Ρ Π΄ΡΡΠ³ΠΈΡ ΡΠΏΠΈΡΠΊΠ°Ρ ΠΈ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠΌ, ΡΡΠΎ object ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ²ΡΠΌ (Π½Π΅ Π½ΡΠ»Π΅Π²ΡΠΌ) ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ ΡΠΏΠΈΡΠΊΠ° [B, object]. ΠΠ°ΠΊ ΡΠΆΠ΅ Π±ΡΠ»ΠΎ ΡΠΊΠ°Π·Π°Π½ΠΎ Π²ΡΡΠ΅, ΠΏΠΎ ΡΡΡΠΈ, ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΊΠ»Π°ΡΡ object ΠΏΡΠ΅Π΄ΠΎΠΊ ΠΊΠ»Π°ΡΡΠ° B. Π‘ΡΠ°Π»ΠΎ Π±ΡΡΡ, ΡΠ½Π°ΡΠ°Π»Π° ΠΈΠΌΠ΅Π΅Ρ ΡΠΌΡΡΠ» ΠΏΠΎΠΈΡΠΊΠ°ΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ Π² ΠΊΠ»Π°ΡΡΠ΅ B. ΠΠΎΡΡΠΎΠΌΡ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΡΠΏΡΠ°Π²Π΅Π΄Π»ΠΈΠ²ΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ ΠΊ ΠΏΡΠ½ΠΊΡΡ 1.
- Π‘Π½ΠΎΠ²Π° Π²ΠΎΠ·ΡΠΌΡΠΌ Π½ΡΠ»Π΅Π²ΠΎΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ, Π½ΠΎ Π½Π° ΡΡΠΎΡ ΡΠ°Π· ΡΠΆΠ΅ ΠΈΠ· Π²ΡΠΎΡΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ°, Ρ.Π΅. B ΠΈΠ· ΡΠΏΠΈΡΠΊΠ° [B, object].
- ΠΠΎΠΈΡΠ΅ΠΌ Π΅Π³ΠΎ Π² Π΄ΡΡΠ³ΠΈΡ ΡΠΏΠΈΡΠΊΠ°Ρ ΠΈ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠΌ Π΅Π³ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΡΠ΅ΡΡΠ΅ΠΌ ΡΠΏΠΈΡΠΊΠ΅ [B] Π² Π½ΡΠ»Π΅Π²ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ, ΡΡΠΎ Π½Π°Ρ Π²ΠΏΠΎΠ»Π½Π΅ ΡΡΡΡΠ°ΠΈΠ²Π°Π΅Ρ. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π΅Π³ΠΎ Π² ΠΈΡΠΎΠ³ΠΎΠ²ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ, Π° Π·Π°ΡΠ΅ΠΌ ΡΠ΄Π°Π»ΠΈΠΌ ΠΈΠ·ΠΎ Π²ΡΠ΅Ρ ΡΠΏΠΈΡΠΊΠΎΠ² Π² ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΈ. ΠΠΎΠ»ΡΡΠΈΠΌ L = [A] + [B] = [A, B] ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ L[C] = [C] + [A, B] + merge([object], [object]).
- ΠΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠ΅ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ merge([object], [object]) ΡΠΆΠ΅ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π»ΠΎΡΡ Π²ΡΡΠ΅. Π ΠΈΡΠΎΠ³Π΅ ΠΏΠΎΠ»ΡΡΠΈΠΌ L[C] = [C] + [A, B] + [object] = [C] + [A, B, object] = [C, A, B, object]. Π‘ΠΏΠΈΡΠΎΠΊ [A, B, object] β ΡΡΠΎ ΠΈ Π΅ΡΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π½Π°ΡΠ΅Π³ΠΎ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ merge(L[A], L[B], [A, B]).
ΠΠ°Π΄Π΅ΡΡΡ ΡΡΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΡΠΆΠ΅ ΡΡΠ°Π» ΠΏΠΎΠ½ΡΡΠ½Π΅Π΅. ΠΠ΄Π½Π°ΠΊΠΎ Π΅ΡΡ Π½Π΅ ΡΡΠ½ΠΎ, Π·Π°ΡΠ΅ΠΌ Π² ΠΊΠΎΠ½Π΅Ρ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΏΠΎ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΡΠΏΠΈΡΠΎΠΊ Π²ΡΠ΅Ρ ΡΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΉ. ΠΡΠΎΠ±ΠΎ ΠΏΡΠΎΠ·ΠΎΡΠ»ΠΈΠ²ΡΠ΅ ΡΠΆΠ΅ ΠΌΠΎΠ³Π»ΠΈ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ Π΅ΡΠ»ΠΈ Π±Ρ ΠΌΡ ΠΏΠΎΠΌΠ΅Π½ΡΠ»ΠΈ Π² ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΈ ΠΌΠ΅ΡΡΠ°ΠΌΠΈ Π»ΠΈΠ½Π΅Π°ΡΠΈΠ·Π°ΡΠΈΠΈ L[A] ΠΈ L[B], Ρ.Π΅. Π½Π°ΠΏΠΈΡΠ°Π»ΠΈ Π±Ρ merge(L[B], L[A], [A, B]), ΡΠΎ ΡΠΏΠΈΡΠΎΠΊ ΡΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΉ, ΡΠΊΠ°Π·Π°Π½Π½ΡΡ Π² ΡΠΎΠΌ ΠΆΠ΅ ΠΏΠΎΡΡΠ΄ΠΊΠ΅, ΡΡΠΎ ΠΈ ΠΏΡΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠ»Π°ΡΡΠ°-ΠΏΠΎΡΠΎΠΌΠΊΠ° class C(A, B) Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ» Π±Ρ ΠΊΠ»Π°ΡΡΡ B Π±ΡΡΡ ΠΎΠ±ΡΡΠΊΠ°Π½Π½ΡΠΌ ΡΠ°Π½ΡΡΠ΅, ΡΠ΅ΠΌ A. Π ΡΡΠΎ ΠΏΡΠ°Π²Π΄Π°. Π‘ΠΏΠΈΡΠΎΠΊ ΡΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΉ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ, ΡΡΠΎΠ±Ρ Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡΡ Π½Π°ΡΡΡΠΈΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠ° Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΡΠ°ΡΡΠΈΠ½ΡΡΠ²Π°. ΠΠΎ Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ°Π·Π±Π΅ΡΡΠΌ ΠΏΡΠΈΠΌΠ΅Ρ class C(D, E):
object | D | \ | E | / C
ΠΠ°ΠΏΠΈΡΠ΅ΠΌ Π»ΠΈΠ½Π΅Π°ΡΠΈΠ·Π°ΡΠΈΡ L[C]:
L[C] = [C] + merge(L[D], L[E], [D, E])
L[E] = [E] + merge(L[D], [D])
L[D] = [D] + merge(L[object], [object]) = [D, object]
ΠΡΠΎΠ²Π΅Π΄ΡΠΌ ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΈ ΠΏΠΎΠ»ΡΡΠΈΠΌ:
L[E] = [E] + merge([D, object], [D]) = [E, D, object]
L[C] = [C] + merge([D, object], [E, D, object], [D, E])
Π’Π΅ΠΏΠ΅ΡΡ ΠΏΠΎΡΠΌΠΎΡΡΠΈΡΠ΅, ΡΡΠΎ ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ. ΠΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ merge([D, object], [E, D, object], [D, E]) Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π² ΡΠΏΠΈΡΠΊΠ°Ρ [D, object] ΠΈ [D, E] Π½ΡΠ»Π΅Π²ΡΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ D, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ²ΡΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ ΡΠΏΠΈΡΠΊΠ° [E, D, object]. Π Π½Π°ΠΎΠ±ΠΎΡΠΎΡ, E, ΡΠ²Π»ΡΡΡΠ΅Π΅ΡΡ Π½ΡΠ»Π΅Π²ΡΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ [E, D, object] ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈ ΠΏΠ΅ΡΠ²ΡΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ [D, E]. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΠ΅ΡΠ΅Π· 3 ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΏΡΠΈΠ΄ΡΡ ΠΊ ΠΏΡΠ½ΠΊΡΡ 5, ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ ΠΠΈΡΠΎΠ½ Π²ΡΠΊΠΈΠ½Π΅Ρ ΠΎΡΠΈΠ±ΠΊΡ TypeError: Cannot create a consistent method resolution order (MRO) for bases D, E. ΠΡΠ»ΠΈ Π±Ρ Π½Π°ΡΠ΅ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Π½Π΅ Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°Π»ΠΎΡΡ ΡΠΏΠΈΡΠΊΠΎΠΌ ΡΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΉ, ΡΠΎ ΠΌΡ Π±Ρ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ Π½Π°ΡΡΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡΡΠ΄ΠΊΠ° Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΡΠ°ΡΡΠΈΠ½ΡΡΠ²Π°: L[C] = [C] + merge([D, object], [E, D, object]) = [C] + [E] + merge([D, object], [D, object]) = [C] + [E, D] + [object] = [C, E, D, object]. ΠΡΠΈ ΡΠ°ΠΊΠΎΠΉ Π»ΠΈΠ½Π΅Π°ΡΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠ»Π°ΡΡΠ° C ΠΏΠΎΠΈΡΠΊ Π²ΡΠ»ΡΡ Π±Ρ ΡΠ½Π°ΡΠ°Π»Π° Π² ΠΊΠ»Π°ΡΡΠ΅ E, Π° ΠΏΠΎΡΠΎΠΌ Π² ΠΊΠ»Π°ΡΡΠ΅ D, Ρ ΠΎΡΡ Π² ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΈ Π±ΡΠ»ΠΎ Π·Π°ΠΏΠΈΡΠ°Π½ΠΎ C(D, E).
Π Π΅ΡΠΈΡΡ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π½Π΅ ΡΠ»ΠΎΠΆΠ½ΠΎ. ΠΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ°ΡΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ Π½Π° class C(E, D). Π ΡΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠΌ:
L[C] = [C] + merge([E, D, object], [D, object], [E, D]) = [C] + [E] + merge([D, object], [D, object], [D]) = [C] + [E, D, object] = [C, E, D, object].
ΠΠΎ ΡΡΡΠΈ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΎΡΡ, Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π² ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΈ ΠΊΠ»Π°ΡΡΠ° ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡ ΡΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΉ ΠΏΠΎΠ»ΡΡΠΈΠ»ΡΡ ΡΠ°ΠΊΠΈΠΌ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π² Π»ΠΈΠ½Π΅Π°ΡΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠ»Π°ΡΡΠ°, Ρ.Π΅. ΡΠΎΠ±Π»ΡΠ΄Π°Π΅ΡΡΡ ΠΏΠΎΡΡΠ΄ΠΎΠΊ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΡΠ°ΡΡΠΈΠ½ΡΡΠ²Π°. ΠΠ°Π΄ΠΎ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ Ρ
ΠΎΡΡ ΠΠΈΡΠΎΠ½ ΠΈ Π½Π°ΠΌΠ΅ΠΊΠ°Π΅Ρ, Π² ΠΊΠ°ΠΊΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅ Π»ΠΎΠ³ΠΈΡΠ½Π΅Π΅ Π±ΡΠ»ΠΎ Π±Ρ ΡΠΊΠ°Π·Π°ΡΡ ΡΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΉ, ΠΎΠ½ Π½Π΅ ΡΡΠ°Π½Π΅Ρ ΠΌΠ΅ΡΠ°ΡΡ Π²Π°ΠΌ ΠΈΡΠΊΠ°ΡΡ ΠΏΡΠΈΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ, Π΅ΡΠ»ΠΈ Π²Ρ ΠΎΠ±ΡΡΠ²ΠΈΡΠ΅ ΡΠ²ΠΎΠΉ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ MRO ΡΠ΅ΡΠ΅Π· ΠΌΠ΅ΡΠ°ΠΊΠ»Π°ΡΡ. ΠΠΎ ΠΎΠ± ΡΡΠΎΠΌ Π±Π»ΠΈΠΆΠ΅ ΠΊ ΠΊΠΎΠ½ΡΡ.
ΠΠΈΡΠΎΠ½ Π²ΡΡΠΈΡΠ»ΡΠ΅Ρ Π»ΠΈΠ½Π΅Π°ΡΠΈΠ·Π°ΡΠΈΡ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΊΠ»Π°ΡΡΠ°. ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ Π΅Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄Π»Ρ ΡΠ°ΠΌΠΎΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΈΡ -ΡΠΎ Π΄ΡΡΠ³ΠΈΡ ΡΠ΅Π»Π΅ΠΉ β ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ ΠΊΠ»Π°ΡΡΠ° __mro__ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, C.__mro__). Π§ΡΠΎΠ±Ρ Π·Π°ΠΊΡΠ΅ΠΏΠΈΡΡ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π» ΡΠ°Π·Π±Π΅ΡΡΠΌ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΏΠΎΠ·Π°ΠΊΠΎΠ²ΡΡΠΈΡΡΠ΅Π΅. ΠΠ»Π°ΡΡ object ΡΠΌΡΡΠ»Π΅Π½Π½ΠΎ Π²ΡΠ±ΡΠΎΡΠ΅Π½, ΡΡΠΎΠ±Ρ Π½Π΅ Π·Π°Π³ΡΠΎΠΌΠΎΠΆΠ΄Π°ΡΡ Π»ΠΈΠ½Π΅Π°ΡΠΈΠ·Π°ΡΠΈΠΈ. ΠΠ°ΠΊ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ ΠΈΠ· ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Π²ΡΡΠ΅, ΠΏΡΠΈ ΠΎΠ΄ΠΈΠ½ΠΎΡΠ½ΠΎΠΌ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠ»Π°ΡΡΡ ΠΏΡΠΎΡΡΠΎ Π²ΡΡΡΡΠ°ΠΈΠ²Π°ΡΡΡΡ Π² ΡΠ΅ΠΏΠΎΡΠΊΡ ΠΎΡ ΠΏΠΎΡΠΎΠΌΠΊΠ° ΠΊ ΠΏΡΠ΅Π΄ΠΊΠ°ΠΌ, ΡΠ°ΠΊ ΡΡΠΎ object Π²ΡΠ΅Π³Π΄Π° Π±ΡΠ΄Π΅Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡΡ Π² ΠΊΠΎΠ½ΡΠ΅ Π»ΡΠ±ΠΎΠΉ ΡΠ΅ΠΏΠΎΡΠΊΠΈ. Π Π΅ΡΡ. Π― Π½Π΅ ΠΊΡΠ»ΠΈΠ½Π°Ρ ΠΈ Π½Π΅ ΠΌΡΠ·ΡΠΊΠ°Π½Ρ, ΡΠ°ΠΊ ΡΡΠΎ ΠΏΡΠΈΠΌΠ΅ΡΡ β ΡΡΠΎ Π²ΡΠ΅Π³ΠΎ Π»ΠΈΡΡ ΠΏΡΠΈΠΌΠ΅ΡΡ. ΠΠ΅ ΡΡΠΎΠΈΡ Π°ΠΊΡΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ²ΠΎΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠΌΡΡΠ»ΠΎΠ²ΡΡ Π½Π΅ΡΠΎΡΠ½ΠΎΡΡΡΡ Π² Π½ΠΈΡ .
Music / \ Rock Gothic ------ / \ / \ Metal Gothic Rock \ | | \ \------------------ Gothic Metal | / The 69 Eyes
class Music(object): pass
class Rock(Music): pass
class Gothic(Music): pass
class Metal(Rock): pass
class GothicRock(Rock, Gothic): pass
class GothicMetal(Metal, Gothic): pass
class The69Eyes(GothicRock, GothicMetal): pass
L[The69Eyes] = [The69Eyes] + merge(L[GothicRock], L[GothicMetal], [GothicRock, GothicMetal])
L[GothicRock] = [GothicRock] + merge(L[Rock], L[Gothic], [Rock, Gothic])
L[GothicMetal] = [GothicMetal] + merge(L[Metal], L[Gothic], [Metal, Gothic])
L[Rock] = [Rock, Music]
L[Gothic] = [Gothic, Music]
L[Metal] = [Metal] + [Rock, Music] = [Metal, Rock, Music]
ΠΠΎΡΠ»Π΅ ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΎΠΊ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ:
L[GothicRock] = [GothicRock] + merge([Rock, Music], [Gothic, Music], [Rock, Gothic]) = [GothicRock, Rock, Gothic, Music]
L[GothicMetal] = [GothicMetal] + merge([Metal, Rock, Music], [Gothic, Music], [Metal, Gothic]) = [GothicMetal] + [Metal, Rock, Gothic, Music] = [GothicMetal, Metal, Rock, Gothic, Music]
L[The69Eyes] = [The69Eyes] + merge([GothicRock, Rock, Gothic, Music], [GothicMetal, Metal, Rock, Gothic, Music], [GothicRock, GothicMetal])
= [The69Eyes] + [GothicRock, GothicMetal] + merge([Rock, Gothic, Music], [Metal, Rock, Gothic, Music])
= [The69Eyes] + [GothicRock, GothicMetal, Metal] + merge([Rock, Gothic, Music], [Rock, Gothic, Music])
= [The69Eyes, GothicRock, GothicMetal, Metal, Rock, Gothic, Music]
Food ------- / \ \ Meat Milk Flour | \ \ / Rabbit Pork Pasty \ | / Pie
class Food(object): pass
class Meat(Food): pass
class Milk(Food): pass
class Flour(Food): pass
class Rabbit(Meat): pass
class Pork(Meat): pass
class Pasty(Milk, Flour): pass
class Pie(Rabbit, Pork, Pasty): pass
L[Pie] = [Pie] + merge(L[Rabbit], L[Pork], L[Pasty], [Rabbit, Pork, Pasty])
L[Rabbit] = [Rabbit] + merge(L[Meat], [Meat])
L[Pork] = [Pork] + merge(L[Meat], [Meat])
L[Pasty] = [Pasty] + merge(L[Milk], L[Flour], [Milk, Flour])
L[Meat] = [Meat] + merge(L[Food], [Food]) = [Meat, Food]
L[Milk] = [Milk] + merge(L[Food], [Food]) = [Milk, Food]
L[Flour] = [Flour] + merge(L[Food], [Food]) = [Flour, Food]
ΠΠΎΡΠ»Π΅ ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΎΠΊ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ:
L[Rabbit] = [Rabbit, Meat, Food]
L[Pork] = [Pork, Meat, Food]
L[Pasty] = [Pasty] + merge([Milk, Food], [Flour, Food], [Milk, Flour]) = [Pasty] + [Milk, Flour, Food] = [Pasty, Milk, Flour, Food]
L[Pie] = [Pie] + merge([Rabbit, Meat, Food], [Pork, Meat, Food], [Pasty, Milk, Flour, Food], [Rabbit, Pork, Pasty])
= [Pie] + [Rabbit] + merge([Meat, Food], [Pork, Meat, Food], [Pasty, Milk, Flour, Food], [Pork, Pasty])
= [Pie] + [Rabbit, Pork] + merge([Meat, Food], [Meat, Food], [Pasty, Milk, Flour, Food], [Pasty])
= [Pie] + [Rabbit, Pork, Meat] + merge([Food], [Food], [Pasty, Milk, Flour, Food], [Pasty])
= [Pie] + [Rabbit, Pork, Meat, Pasty] + merge([Food], [Food], [Milk, Flour, Food])
= [Pie] + [Rabbit, Pork, Meat, Pasty, Milk, Flour, Food]
= [Pie, Rabbit, Pork, Meat, Pasty, Milk, Flour, Food]
ΠΠ°ΠΊ ΠΎΠ±ΡΠ°ΡΠΈΡΡΡΡ ΠΊ ΠΏΡΠ΅Π΄ΠΊΠ°ΠΌ.
ΠΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΆΠ΄Π°Π΅Ρ Π΅ΡΡ ΠΎΠ΄Π½Ρ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ΅ΡΠΊΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΏΠΎΠΈΡΠΊ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-ΡΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° Π² ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΈΡ
ΠΊΠ»Π°ΡΡΠ°Ρ
β ΡΡΠΎ Π»ΠΈΡΡ ΡΠ°ΡΡΡ ΠΏΠΎΠ»ΡΠ·Ρ, ΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·Π²Π»Π΅ΡΡ ΠΈΠ· Π½Π΅Π³ΠΎ. ΠΠ°ΠΊ ΠΈ Π² ΡΠ»ΡΡΠ°Π΅ ΠΎΠ΄ΠΈΠ½ΠΎΡΠ½ΠΎΠ³ΠΎ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ, ΡΠ°ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Π»Π΅Π³ΡΠΈΡΡ ΡΠ΅Π±Π΅ ΠΆΠΈΠ·Π½Ρ, ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π² Π² ΠΏΠΎΡΠΎΠΌΠΊΠ΅ ΠΌΠ΅ΡΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠΌΠΈΠΌΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ
Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ Π±ΡΠ΄Π΅Ρ Π²ΡΠ·ΡΠ²Π°ΡΡ ΡΠΎΡ ΠΆΠ΅ ΡΠ°ΠΌΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΡΠΎΠ΄ΠΈΡΠ΅Π»Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠ°ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΡΡΠ΅ΡΠΈΡΡ ΡΠ°ΠΊΠΎΠ΅:class B(A):
Β Β Β Β def __init__(self):
Β Β Β Β Β Β Β Β # something
Β Β Β Β Β Β Β Β A.__init__(self)
ΠΠ΄Π½Π°ΠΊΠΎ, Π΄Π»Ρ ΡΠ»ΡΡΠ°Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠΎΡ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ Π½Π΅ Π³ΠΎΠ΄ΠΈΡΡΡ. Π Π²ΠΎΡ ΠΏΠΎ ΠΊΠ°ΠΊΠΈΠΌ ΠΏΡΠΈΡΠΈΠ½Π°ΠΌ:class C(B, A):
Β Β Β Β def __init__(self):
Β Β Β Β Β Β Β Β # something
Β Β Β Β Β Β Β Β B.__init__(self)
Β Β Β Β Β Β Β Β A.__init__(self)
ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ
, ΠΌΡ ΡΠ²Π½ΠΎ ΠΎΠ±ΡΠ°ΡΠ°Π΅ΠΌΡΡ ΠΊ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΈΠΌ ΠΊΠ»Π°ΡΡΠ°ΠΌ (Π²ΠΎΠΎΠ±ΡΠ΅-ΡΠΎ ΠΈ Π² ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Ρ ΠΎΠ΄ΠΈΠ½ΠΎΡΠ½ΡΠΌ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅). ΠΡΠ»ΠΈ ΠΌΡ Π·Π°Ρ
ΠΎΡΠΈΠΌ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ ΠΊΠΎΠ³ΠΎ-ΡΠΎ ΠΈΠ· ΠΏΡΠ΅Π΄ΠΊΠΎΠ² Π½Π° Π΄ΡΡΠ³ΠΎΠΉ ΠΊΠ»Π°ΡΡ ΠΈΠ»ΠΈ Π²ΠΎΠΎΠ±ΡΠ΅ ΡΠ±ΡΠ°ΡΡ, ΡΠΎ Π½Π°ΠΌ ΠΏΡΠΈΠ΄ΡΡΡΡ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ Π²ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΊ Π½Π΅ΠΌΡ ΠΎΠ±ΡΠ°ΡΠ°Π»ΠΈΡΡ. ΠΡΠΎ ΡΡΠ΅Π²Π°ΡΠΎ Π±Π°Π³Π°ΠΌΠΈ, Π΅ΡΠ»ΠΈ ΠΌΡ ΡΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ ΠΏΡΠΎΠΏΡΡΡΠΈΠΌ. ΠΠΎ ΡΡΠΎ Π΅ΡΡ ΠΏΠΎΠ» Π±Π΅Π΄Ρ. ΠΠΎ-Π²ΡΠΎΡΡΡ
, ΠΌΡ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π·Π½Π°Π΅ΠΌ ΠΎ ΠΊΠ»Π°ΡΡΠ°Ρ
A ΠΈ B. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρ Π½ΠΈΡ
Π΅ΡΡΡ ΠΎΠ±ΡΠΈΠ΅ ΠΏΡΠ΅Π΄ΠΊΠΈ, ΠΊ ΠΊΠΎΡΠΎΡΡΠΌ ΠΎΠ½ΠΈ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:class A(P1, P2):
Β Β Β Β def __init__(self):
Β Β Β Β Β Β Β Β # something
Β Β Β Β Β Β Β Β P1.__init__(self)
Β Β Β Β Β Β Β Β P2.__init__(self)
class B(P1, P2):
Β Β Β Β def __init__(self):
Β Β Β Β Β Β Β Β # something
Β Β Β Β Β Β Β Β P1.__init__(self)
Β Β Β Β Β Β Β Β P2.__init__(self)
ΠΡΠ»ΠΈ ΡΡΠΎ ΡΠ°ΠΊ, ΡΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ, ΡΡΠΎ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΎΠ±ΡΠΈΡ
ΠΏΡΠ΅Π΄ΠΊΠΎΠ² ΠΎΡΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π΄Π²Π° ΡΠ°Π·Π°. ΠΡΠΎ Π½Π΅ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ. Π§ΡΠΎΠ±Ρ ΡΡΠΎΠ³ΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ Π² ΠΠΈΡΠΎΠ½Π΅ Π΅ΡΡΡ ΠΊΠ»Π°ΡΡ super. Π Π²Π΅ΡΡΠΈΠΈ 3.0 ΠΎΠ½ ΠΎΠΊΠΎΠ½ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎ ΠΎΡΠ΅Π»ΠΎΠ²Π΅ΡΠ΅Π½ ΠΈ ΠΊ Π½Π΅ΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:class C(B, A):
Β Β Β Β def __init__(self):
Β Β Β Β Β Β Β Β # something
Β Β Β Β Β Β Β Β super().__init__() # Π΄Π»Ρ Π²Π΅ΡΡΠΈΠΉ ΠΌΠ»Π°Π΄ΡΠ΅ 3.0 Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ super(C, self)
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π² Π²Π΅ΡΡΠΈΡΡ
2.x ΠΏΠ΅ΡΠ²ΡΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΡΠ°ΠΌ ΠΊΠ»Π°ΡΡ, Π° Π½Π΅ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ Π΅Π³ΠΎ ΡΠΎΠ΄ΠΈΡΠ΅Π»Ρ. ΠΠΎ ΡΡΡΠΈ, ΠΎΠ±ΡΠ΅ΠΊΡ ΠΊΠ»Π°ΡΡΠ° super Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ Π°ΡΠ³ΡΠΌΠ΅ΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΠ΅ Π΅ΠΌΡ Π² ΠΌΠΎΠΌΠ΅Π½Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΈ ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ Π»ΡΠ±ΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° (super().__init__(self) Π² ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π²ΡΡΠ΅) ΠΏΡΠΎΡ
ΠΎΠ΄ΠΈΡ ΠΏΠΎ ΡΠΏΠΈΡΠΊΡ Π»ΠΈΠ½Π΅Π°ΡΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠ»Π°ΡΡΠ° Π²ΡΠΎΡΠΎΠ³ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° (self.__class__.__mro__), ΠΏΡΡΠ°ΡΡΡ Π²ΡΠ·Π²Π°ΡΡ ΡΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ ΠΏΠΎ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ Π΄Π»Ρ Π²ΡΠ΅Ρ
ΠΊΠ»Π°ΡΡΠΎΠ², ΡΠ»Π΅Π΄ΡΡΡΠΈΡ
Π·Π° ΠΊΠ»Π°ΡΡΠΎΠΌ Π² ΠΏΠ΅ΡΠ²ΠΎΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ΅ (ΠΊΠ»Π°ΡΡ C), ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Ρ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΏΠ΅ΡΠ²ΡΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ (self). Π’.Π΅. Π΄Π»Ρ Π½Π°ΡΠ΅Π³ΠΎ ΡΠ»ΡΡΠ°Ρ:
self.__class__.__mro__ = [C, B, A, P1, P2, β¦]
super(C, self).__init__() => B.__init__(self)
super(B, self).__init__() => A.__init__(self)
super(A, self).__init__() => P1.__init__(self)
ΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΡΠ΅, ΠΈΠ· ΠΌΠ΅ΡΠΎΠ΄Π° B.__init__ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ super Π±ΡΠ΄Π΅Ρ Π²ΡΠ·Π²Π°Π½ ΠΌΠ΅ΡΠΎΠ΄ A.__init__, Ρ
ΠΎΡΡ ΠΊΠ»Π°ΡΡ A Ρ Π½ΠΈΠΌ Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ ΡΠ²ΡΠ·Π°Π½ ΠΈ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Π΅Π³ΠΎ ΠΏΡΠ΅Π΄ΠΊΠΎΠΌ. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΏΠΎ ΡΠ΅ΠΏΠΎΡΠΊΠ΅ ΠΎΠ΄Π½ΠΎΠΊΡΠ°ΡΠ½ΠΎ ΠΎΡΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ Π²ΡΠ΅Ρ
ΠΏΡΠ΅Π΄ΠΊΠΎΠ².
ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΠ°ΠΊΠΎΠΌΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Ρ ΠΌΠΎΠΆΠ½ΠΎ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π²Π²Π΅ΡΡΠΈ Π΄Π»Ρ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ° Ρ ΠΏΠΈΡΠΎΠ³ΠΎΠΌ ΠΌΠ΅ΡΠΎΠ΄ allergen Π΄Π»Ρ Π²ΡΠ΅Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΡ ΠΎΠ΄Ρ ΠΏΠΎ ΡΠ΅ΠΏΠΎΡΠΊΠ΅ ΠΏΡΠ΅Π΄ΠΊΠΎΠ² ΡΠΎΡΡΠ°Π²Π»ΡΡΡ ΡΠΏΠΈΡΠΎΠΊ Π²ΡΠ΅Ρ Π°Π»Π»Π΅ΡΠ³Π΅Π½ΠΎΠ² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ², ΡΡΠΎΠ±Ρ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅Π΄ΠΈΡΡ ΠΏΠΎΠΊΡΠΏΠ°ΡΠ΅Π»Π΅ΠΉ. ΠΡΠ΄Π΅Ρ ΡΠ΄ΠΎΠ±Π½ΠΎ Π²ΠΌΠ΅ΡΡΠΎ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΡΠ²Π°ΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· ΡΠΏΠΈΡΠΎΠΊ Β«Π½Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡΒ» Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΄ΡΠΊΡΠ° ΠΏΡΠΎΡΡΠΎ ΡΠ½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ ΠΎΡ ΡΠΎΡΡΠ°Π²Π»ΡΡΡΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ². Π’ΠΎΠ³Π΄Π° ΡΠΏΠΈΡΠΎΠΊ Π±ΡΠ΄Π΅Ρ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°ΡΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ. ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π° Π²ΡΠ±ΠΎΡ Π½Π°ΠΏΠΈΡΠΊΠΈ ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΠΏΡΠΎΠ΄ΡΠΊΡΡ, ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΠΊΡΡΡΠΈΠ²Π°ΡΡ Π²Π΅ΡΠ° ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠ΅Π½ΠΈΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π° ΡΠ°ΠΌΠΎΠΏΠΈΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ-ΡΠ°Π΄ΠΈΠΎΡΡΠ°Π½ΡΠΈΠΈ, ΠΈΠ΄Ρ ΠΎΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ Π³ΡΡΠΏΠΏΡ ΠΊ ΠΆΠ°Π½ΡΠ°ΠΌ Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½ΡΠΎΠΌ Π·Π°ΡΡΡ Π°Π½ΠΈΡ.
ΠΡΠΈΠΌΠ΅Ρ Ρ ΠΏΠΈΡΠΎΠ³ΠΎΠΌ ΠΌΠΎΠ³ Π±Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ (Π΄Π»Ρ Π²Π΅ΡΡΠΈΠΈ 2.x):class Food(object):
Β Β Β Β def drink(self):
Β Β Β Β Β Β Β Β return ['Water', 'Cola']
Β Β Β Β def allergen(self):
Β Β Β Β Β Β Β Β return []
class Meat(Food):
Β Β Β Β def drink(self):
Β Β Β Β Β Β Β Β return [‘Red wine’] + super(Meat, self).drink()
class Milk(Food):
Β Β Β Β def allergen(self):
Β Β Β Β Β Β Β Β return [‘Milk-protein’] + super(Milk, self).allergen()
class Flour(Food): pass
class Rabbit(Meat):
Β Β Β Β def drink(self):
Β Β Β Β Β Β Β Β return [‘Novello wine’] + super(Rabbit, self).drink()
class Pork(Meat):
Β Β Β Β def drink(self):
Β Β Β Β Β Β Β Β return [‘Sovinion wine’] + super(Pork, self).drink()
Β Β Β Β def allergen(self):
Β Β Β Β Β Β Β Β return [‘Pork-protein’] + super(Pork, self).allergen()
class Pasty(Milk, Flour): pass
class Pie(Rabbit, Pork, Pasty):
Β Β Β Β def drink(self):
Β Β Β Β Β Β Β Β return [‘Mineral water’] + super(Pie, self).drink()
if __name__ == «__main__»:
Β Β Β Β pie = Pie()
Β Β Β Β print ‘List of allergens: ‘
Β Β Β Β for allergen in pie.allergen(): print ‘ — ‘ + allergen
Β Β Β Β print ‘List of recommended drinks: ‘
Β Β Β Β for drink in pie.drink(): print ‘ — ‘ + drink
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΌΡ ΡΠ²ΠΈΠ΄ΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
List of allergens:
β Pork-protein
β Milk-protein
List of recommended drinks:
β Mineral water
β Novello wine
β Sovinion wine
β Red wine
β Water
β Cola
ΠΡΡ ΠΎΠ΄Ρ ΠΈΠ· ΡΡΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ°, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ½ΡΡΡ, ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠ»ΡΡ ΡΠΏΠΈΡΠΎΠΊ Π»ΠΈΠ½Π΅Π°ΡΠΈΠ·Π°ΡΠΈΠΈ. ΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΡΠ΅, Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π½Π΅ Π±ΡΠ» Π²ΡΠ·Π²Π°Π½ Π΄Π²Π°ΠΆΠ΄Ρ, ΠΈΠ½Π°ΡΠ΅ Π² ΡΠΏΠΈΡΠΊΠ΅ Π°Π»Π»Π΅ΡΠ³Π΅Π½ΠΎΠ² ΠΈΠ»ΠΈ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΉ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ»ΠΈΡΡ Π±Ρ ΠΏΠΎΠ²ΡΠΎΡΠ΅Π½ΠΈΡ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π² ΡΠ°ΠΌΠΎΠΌ ΡΡΠ°ΡΡΠ΅ΠΌ ΠΊΠ»Π°ΡΡΠ΅ Food ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ ΠΎΠ±Π° ΠΌΠ΅ΡΠΎΠ΄Π° β allergen ΠΈ drink. ΠΡΠ·ΠΎΠ² super() Π½Π΅ ΡΠΎΠ²Π΅ΡΡΠ°Π΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ, ΡΠ°ΠΊ ΡΡΠΎ Π΅ΡΠ»ΠΈ ΠΌΡ ΠΏΡΡΠ°Π΅ΠΌΡΡ ΠΎΠ±ΡΠ°ΡΠΈΡΡΡΡ ΠΊ Π½Π΅ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅ΠΌΡ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΡΠΎ ΠΏΠΎΠ»ΡΡΠΈΠΌ ΠΎΡΠΈΠ±ΠΊΡ ΡΠΈΠΏΠ° AttributeError: ‘super’ object has no attribute ‘allergen’.
ΠΠΎΠ³Π΄Π° Π»ΠΈΠ½Π΅Π°ΡΠΈΠ·Π°ΡΠΈΡ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠΎΡΡΠ°Π²Π»Π΅Π½Π°.
ΠΡΡΠ΅ ΡΠΆΠ΅ Π±ΡΠ» ΡΠ°Π·ΠΎΠ±ΡΠ°Π½ ΡΠ»ΡΡΠ°ΠΉ, ΠΊΠΎΠ³Π΄Π° ΡΠΎΡΡΠ°Π²ΠΈΡΡ Π»ΠΈΠ½Π΅Π°ΡΠΈΠ·Π°ΡΠΈΡ ΠΏΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ C3 Π±ΡΠ»ΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. ΠΠ΄Π½Π°ΠΊΠΎ, ΡΠΎΠ³Π΄Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠ΅ΡΠΈΠ»Π°ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½ΠΎΠΉ ΠΌΠ΅ΡΡ ΠΊΠ»Π°ΡΡΠΎΠ²-ΠΏΡΠ΅Π΄ΠΊΠΎΠ² Π² ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΈ ΠΊΠ»Π°ΡΡΠ°-ΠΏΠΎΡΠΎΠΌΠΊΠ°. Π‘ΡΡΠ΅ΡΡΠ²ΡΡΡ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ»ΡΡΠ°ΠΉ, Π² ΠΊΠΎΡΠΎΡΡΡ
ΡΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π»ΠΈΠ½Π΅Π°ΡΠΈΠ·Π°ΡΠΈΠΈ Π½Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ:class C(A, B): pass
class D(B, A): pass
class E(C, D): pass
L[E] = [E] + merge(L[C], L[D], [C, D]) = [E] + merge([C, A, B], [D, B, A], [C, D])
= [E] + [C, D] + merge([A, B], [B, A])
ΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΡΠ΅, ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡ ΠΏΠΎΠ»ΡΡΠΈΠ»ΡΡ Π½Π΅ΡΠ°Π·ΡΠ΅ΡΠΈΠΌΡΠΉ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π² ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΈ C ΠΊΠ»Π°ΡΡ A ΡΡΠΎΠΈΡ ΠΏΠ΅ΡΠ΅Π΄ B, Π° Π² ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΈ D β Π½Π°ΠΎΠ±ΠΎΡΠΎΡ. ΠΠΎ-Ρ
ΡΠΎΡΠ΅ΠΌΡ, Ρ ΡΡΠΎΠ³ΠΎ ΠΌΠ΅ΡΡΠ° Π½Π°Π΄ΠΎ ΠΈΠ΄ΡΠΈ ΠΈ ΠΏΠ΅ΡΠ΅ΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΡΡΡΡΠΊΡΡΡΡ. ΠΠΎ Π΅ΡΠ»ΠΈ Π²Π°ΠΌ ΠΎΡΠ΅Π½Ρ Π½Π°Π΄ΠΎ Π±ΡΡΡΡΠΎ ΠΏΠΎΠ΄Ρ
Π°ΡΠΈΡΡ ΠΈΠ»ΠΈ Π²Ρ ΠΏΡΠΎΡΡΠΎ Π·Π½Π°Π΅ΡΠ΅ ΡΡΠΎ Π΄Π΅Π»Π°Π΅ΡΠ΅, ΠΠΈΡΠΎΠ½ Π½Π΅ ΡΡΠ°Π½Π΅Ρ Π²Π°Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°ΡΡ. Π‘Π²ΠΎΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ Π»ΠΈΠ½Π΅Π°ΡΠΈΠ·Π°ΡΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°ΡΡ ΡΠ΅ΡΠ΅Π· ΠΌΠ΅ΡΠ°ΠΊΠ»Π°ΡΡΡ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π² ΠΌΠ΅ΡΠ°ΠΊΠ»Π°ΡΡΠ΅ ΡΠΊΠ°Π·Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄ mro(cls) β ΠΏΠΎ ΡΡΡΠΈ, ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΌΠ΅ΡΠΎΠ΄ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΌΠ΅ΡΠ°ΠΊΠ»Π°ΡΡΠ° type, β ΠΊΠΎΡΠΎΡΡΠΉ Π²Π΅ΡΠ½ΡΡ Π½ΡΠΆΠ½ΡΡ Π²Π°ΠΌ Π»ΠΈΠ½Π΅Π°ΡΠΈΠ·Π°ΡΠΈΡ.class MetaMRO(type):
Β Β Β Β def mro(cls):
Β Β Β Β Β Β Β Β return (cls, A, B, C, D object)
ΠΠ°Π»ΡΡΠ΅ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠ° ΡΠ°Π·Π»ΠΈΡΠ°Π΅ΡΡΡ Π΄Π»Ρ Π²Π΅ΡΡΠΈΠΈ 3.0 ΠΈ 2.x:class E(C, D): __metaclass__ = MetaMRO # 2.x
class E(C, D, metaclass = MetaMRO): pass # 3.0
ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ E.__mro__ = [E, A, B, C, D, object]. ΠΠ°ΠΌΠ΅ΡΡΠ΅, ΡΡΠΎ Π΅ΡΠ»ΠΈ Π²Ρ Π±Π΅ΡΡΡΠ΅ Π½Π° ΡΠ΅Π±Ρ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ Π·Π° MRO ΠΠΈΡΠΎΠ½ Π½Π΅ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡ Π½ΠΈΠΊΠ°ΠΊΠΈΡ
Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ
ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ ΠΈ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΏΠΎΠΊΠΎΠΉΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΠΈ ΠΏΠΎΠΈΡΠΊ Π² ΠΏΡΠ΅Π΄ΠΊΠ°Ρ
ΡΠ°Π½ΡΡΠ΅ ΡΠ΅ΠΌ Π² ΠΏΠΎΡΠΎΠΌΠΊΠ°Ρ
. Π Ρ
ΠΎΡΡ ΡΡΠΎ Π½Π΅ ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½Π°Ρ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ°, Π½ΠΎ ΡΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.
ΠΠΎΠ»Π΅Π·Π½ΡΠ΅ ΡΡΡΠ»ΠΊΠΈ:
Unifying types and classes in Python 2.2 β ΠΎ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΌΠ΅ΡΠ°-Π΄Π°Π½Π½ΡΡ
. ΠΠ΄Π΅ΡΡ ΠΆΠ΅ ΠΎΠ±ΡΡΠΆΠ΄Π°ΡΡΡΡ MRO, ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ ΠΈ super().
The Python 2.3 Method Resolution Order β Π°Π»Π³ΠΎΡΠΈΡΠΌ C3 Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈ. Π ΠΊΠΎΠ½ΡΠ΅ Π΅ΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ mro ΠΈ merge Π½Π° ΡΠΈΡΡΠΎΠΌ ΠΠΈΡΠΎΠ½Π΅ Π΄Π»Ρ ΡΠ΅Ρ
, ΠΊΡΠΎ Π»ΡΡΡΠ΅ Π²ΠΎΡΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΊΠΎΠ΄ ΡΠ΅ΠΌ ΡΠ΅ΠΊΡΡ.
A Monotonic Superclass Linearization for Dylan β ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ
Π²ΠΈΠ΄ΠΎΠ² Π»ΠΈΠ½Π΅Π°ΡΠΈΠ·Π°ΡΠΈΠΈ.
ΠΠΎΡΠ»Π΅ΡΠ»ΠΎΠ²ΠΈΠ΅.
ΠΠΎΠ½Π΅ΡΠ½ΠΎ, Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ Π²Π°ΡΠΈΡΡ Π²ΡΠ΅ ΡΠΌΠ΅ΠΆΠ½ΡΠ΅ ΡΠ΅ΠΌΡ, ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρ ΠΊΠΎΠ³ΠΎ-ΡΠΎ ΠΏΠΎΡΠ²ΠΈΠ»ΠΎΡΡ Π±ΠΎΠ»ΡΡΠ΅ Π²ΠΎΠΏΡΠΎΡΠΎΠ², ΡΠ΅ΠΌ ΠΎΡΠ²Π΅ΡΠΎΠ². ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΠΌΠ΅ΡΠ°ΠΊΠ»Π°ΡΡΡ, Π±Π°Π·ΠΎΠ²ΡΠ΅ ΠΊΠ»Π°ΡΡΡ type ΠΈ object ΠΈ ΡΠΎΠΌΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅. ΠΡΠ»ΠΈ Π΅ΡΡΡ ΠΈΠ½ΡΠ΅ΡΠ΅Ρ, ΡΠΎ, ΡΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ, Ρ ΠΌΠΎΠ³ Π±Ρ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡ ΡΠ°ΠΊΠΈΠ΅ ΡΠ΅ΠΌΡ:
- ΠΈΠ½ΡΡΠΎΡΠΏΠ΅ΠΊΡΠΈΡ Π² ΠΠΈΡΠΎΠ½Π΅: ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΠΉ help, dir, sys ΠΈ Ρ.ΠΏ.
- type ΠΈ object: ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ ΠΊΠ°ΠΊ Π²ΠΎΠ»ΡΠ½ΡΠΉ ΠΈ ΡΠΎΠΊΡΠ°ΡΡΠ½Π½ΡΠΉ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ Π²ΠΎΡ ΡΡΠΎΠ³ΠΎ
- ΠΌΠ°Π³ΠΈΡ Π² ΠΠΈΡΠΎΠ½Π΅: __str__, __init__, __new__, __slots__ ΠΈ Ρ.Π΄. ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Π΅Ρ ΡΠ°ΠΌ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ, ΡΠ°ΠΊ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°ΡΡΠ΅ΠΉ.
- ΠΌΠ΅ΡΠ°ΠΊΠ»Π°ΡΡΡ.
P.S.: Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Π²ΡΠ΅ΠΌ ΡΠ΅ΠΌ, ΠΊΡΠΎ ΠΏΠΎΠΌΠΎΠ³ ΠΌΠ½Π΅ Π·Π°ΠΏΠΎΡΡΠΈΡΡ ΡΡΠΎΡ ΡΠΎΠΏΠΈΠΊ ΠΈ Π»ΠΈΡΠ½ΠΎ Goodrone.
ΠΠ΅ΡΠΎΠ΄Ρ iter() ΠΈ next(), ΡΡΠΎΠΊ ΠΏΠΎ ΠΈΡΠ΅ΡΠ°ΡΠΎΡΠ°ΠΌ python ~ PythonRu
ΠΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ ΡΡΠΎΠΊ: ΠΠ»Π°ΡΡΡ ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΡ Python
List, tuple, dict ΠΈ sets β ΡΡΠΎ Π²ΡΠ΅ ΠΈΡΠ΅ΡΠΈΡΡΠ΅ΠΌΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ. ΠΠ½ΠΈ ΡΠ²Π»ΡΡΡΡΡ ΠΈΡΠ΅ΡΠΈΡΡΠ΅ΠΌΡΠΌΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°ΠΌΠΈ, ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ
Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΈΡΠ΅ΡΠ°ΡΠΎΡ. ΠΡΠ΅ ΡΡΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΈΠΌΠ΅ΡΡ ΠΌΠ΅ΡΠΎΠ΄ iter()
, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΈΡΠ΅ΡΠ°ΡΠΎΡΠ°.
ΠΠΎΠ»ΡΡΠΈΠΌ ΠΈΡΠ΅ΡΠ°ΡΠΎΡ ΠΈΠ· ΠΊΠΎΡΡΠ΅ΠΆΠ° ΠΈ Π²ΡΠ²Π΅Π΄Π΅ΠΌ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅:
mytuple = ("ΡΠ±Π»ΠΎΠΊΠΎ", "Π±Π°Π½Π°Π½", "Π²ΠΈΡΠ½Ρ")
myit = iter(mytuple)
print(next(myit))
print(next(myit))
print(next(myit))
ΠΡΠ²ΠΎΠ΄:
ΡΠ±Π»ΠΎΠΊΠΎ
Π±Π°Π½Π°Π½
Π²ΠΈΡΠ½Ρ
ΠΠ°ΠΆΠ΅ ΡΡΡΠΎΠΊΠΈ ΡΠ²Π»ΡΡΡΡΡ ΠΈΡΠ΅ΡΠΈΡΡΠ΅ΠΌΡΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ ΠΈ ΠΌΠΎΠ³ΡΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΠΈΡΠ΅ΡΠ°ΡΠΎΡ.
mystr = "Π±Π°Π½Π°Π½"
myit = iter(mystr)
print(next(myit))
print(next(myit))
print(next(myit))
print(next(myit))
print(next(myit))
ΠΡΠ²ΠΎΠ΄:
Π±
Π°
Π½
Π°
Π½
Π¦ΠΈΠΊΠ» ΡΠ΅ΡΠ΅Π· ΠΈΡΠ΅ΡΠ°ΡΠΎΡ
ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΈΠΊΠ» for
Π΄Π»Ρ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ ΠΏΠΎ ΠΈΡΠ΅ΡΠΈΡΡΠ΅ΠΌΡ ΠΎΠ±ΡΠ΅ΠΊΡ.
mytuple = ("ΡΠ±Π»ΠΎΠΊΠΎ", "Π±Π°Π½Π°Π½", "Π²ΠΈΡΠ½Ρ")
for x in mytuple:
print(x)
ΠΡΠ²ΠΎΠ΄:
ΡΠ±Π»ΠΎΠΊΠΎ
Π±Π°Π½Π°Π½
Π²ΠΈΡΠ½Ρ
ΠΡΠ΅ΡΠΈΡΡΠΉΠ΅ΠΌ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΡΡΡΠΎΠΊΠΈ:
mystr = "Π±Π°Π½Π°Π½"
for x in mystr:
print(x)
ΠΡΠ²ΠΎΠ΄:
Π±
Π°
Π½
Π°
Π½
ΠΠΎΠ΄ΠΏΠΈΡΡΠ²Π°ΠΉΡΠ΅ΡΡ Π½Π° ΡΠ΅Π»Π΅Π³ΡΠ°ΠΌ ΠΊΠ°Π½Π°Π»Ρ
Π¦ΠΈΠΊΠ» for
ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΈΡΠ΅ΡΠ°ΡΠΎΡΠ° ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΌΠ΅ΡΠΎΠ΄ next()
Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠΈΠΊΠ»Π°.
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈΡΠ΅ΡΠ°ΡΠΎΡΠ°
Π§ΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ/ΠΊΠ»Π°ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΈΡΠ΅ΡΠ°ΡΠΎΡΠ°, Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ __iter__()
ΠΈ __next__()
Π΄Π»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ°.
ΠΠ°ΠΊ Π²Ρ ΡΠ·Π½Π°Π»ΠΈ ΠΈΠ· ΡΡΠΎΠΊΠ° Β«ΠΠ»Π°ΡΡΡ ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΡ PythonΒ», Ρ Π²ΡΠ΅Ρ
ΠΊΠ»Π°ΡΡΠΎΠ² Π΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ __init__()
, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²Π°ΠΌ Π΄Π΅Π»Π°ΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°.
ΠΠ΅ΡΠΎΠ΄ __iter__()
Π΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ (ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈ Ρ. Π.), ΠΠΎ Π²ΡΠ΅Π³Π΄Π° Π΄ΠΎΠ»ΠΆΠ½Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΡΠ°ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΈΡΠ΅ΡΠ°ΡΠΎΡΠ°. ΠΠ΅ΡΠΎΠ΄ __next __ ()
ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²Π°ΠΌ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ.
Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΠΈΡΠ΅ΡΠ°ΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΈΡΠ»Π°, Π½Π°ΡΠΈΠ½Π°Ρ Ρ 1, ΠΈ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅Ρ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡΡ (Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Ρ 1,2,3,4,5 ΠΈ Ρ. Π΄.):
class MyNumbers:
def __iter__(self):
self.a = 1
return self
def __next__(self):
x = self.a
self.a += 1
return x
myclass = MyNumbers()
myiter = iter(myclass)
print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))
ΠΡΠ²ΠΎΠ΄:
1
2
3
4
5
StopIteration
ΠΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΉ Π²ΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅Ρ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡΡΡ Π²Π΅ΡΠ½ΠΎ, ΠΏΠΎΠΊΠ° Π²Ρ Π²ΡΠ·ΡΠ²Π°Π΅ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ next()
ΠΈΠ»ΠΈ Π΅ΡΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ Π² ΡΠΈΠΊΠ»Π΅ for
. Π§ΡΠΎΠ±Ρ ΠΈΡΠ΅ΡΠ°ΡΠΈΡ Π½Π΅ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π»Π°ΡΡ Π²Π΅ΡΠ½ΠΎ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ StopIteration
.
Π ΠΌΠ΅ΡΠΎΠ΄ __next __()
ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ, ΡΡΠΎΠ±Ρ Π²ΡΠ·Π²Π°ΡΡ ΠΎΡΠΈΠ±ΠΊΡ, Π΅ΡΠ»ΠΈ ΠΈΡΠ΅ΡΠ°ΡΠΈΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ°Π·:
class MyNumbers:
def __iter__(self):
self.a = 1
return self
def __next__(self):
if self.a <= 20:
x = self.a
self.a += 1
return x
else:
raise StopIteration
myclass = MyNumbers()
myiter = iter(myclass)
for x in myiter:
print(x)
ΠΡΠ²ΠΎΠ΄:
1
2
3
...
18
19
20
ΠΠ°Π»Π΅Π΅: ΠΠΎΠ΄ΡΠ»ΠΈ Python
ΠΠ΅ΡΠΎΠ΄Ρ ΡΠΏΠΈΡΠΊΠΎΠ² | Python
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΡΡΡΠΎΠΊΠΎΠ²ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΠΎΡΡΠΈΡΡΡΡΡΡ Π»Π΅ΠΊΡΠΈΠΊΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ — ΠΏΠΎ Π°Π»ΡΠ°Π²ΠΈΡΡ, Π° ΡΠΈΡΠ»ΠΎΠ²ΡΠ΅ ΠΏΠΎ Π²Π΅Π»ΠΈΡΠΈΠ½Π΅ — ΠΎΡ Π±ΠΎΠ»ΡΡΠ΅Π³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΊ ΠΌΠ΅Π½ΡΡΠ΅ΠΌΡ:
>>> x = ['bb', 'c', 'aaa']
>>>
>>> x.sort()
>>> x
['aaa', 'bb', 'c']
>>>
>>> x = [ 5, -0.5, 3, 0, 1, 0.5, 2]
>>>
>>> x.sort()
>>> x
[-0.5, 0, 0.5, 1, 2, 3, 5]
Π‘ΡΠΎΠΈΡ ΡΡΠ°Π·Ρ ΠΎΡΠΌΠ΅ΡΠΈΡΡ ΡΡΠΎ ΡΠΏΠΈΡΠΊΠΈ Ρ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ½ΡΠΌΠΈ ΡΠΈΡΠ»Π°ΠΌΠΈ Π½Π΅ ΡΠΎΡΡΠΈΡΡΡΡΡΡ:
>>> x = [5+1j, 5-1j, 5+0j, -5+1j, 2+2j]
>>> x.sort()
Traceback (most recent call last):
TypeError: '<' not supported between instances of 'complex' and 'complex'
ΠΠ°ΡΠΎ ΡΠΏΠΈΡΠΊΠΈ Ρ ΠΎΠ±ΡΠΊΠ½ΠΎΠ²Π΅Π½Π½ΡΠΌΠΈ ΠΈ Π΄Π΅ΡΡΡΠΈΡΠ½ΡΠΌΠΈ Π΄ΡΠΎΠ±ΡΠΌΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Ρ:
>>> from fractions import Fraction
>>>
>>> x = [Fraction(11, 13), Fraction(5, 6), Fraction(2, 5), Fraction(1, 3)]
>>>
>>> x.sort()
>>> x
[Fraction(1, 3), Fraction(2, 5), Fraction(5, 6), Fraction(11, 13)]
>>>
>>>
>>> from decimal import *
>>>
>>> x = [Decimal('1.123321'), Decimal('1.123322'), Decimal('1.123211')]
>>>
>>> x.sort()
>>> x
[Decimal('1.123211'), Decimal('1.123321'), Decimal('1.123322')]
ΠΠΏΡΠΎΡΠ΅ΠΌ, ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Ρ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π»ΡΠ±ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ <
:
>>> x = [(0,1,0), (1,1,0), (0,1,1), (0,0,0)]
>>>
>>> x.sort()
>>> x
[(0, 0, 0), (0, 1, 0), (0, 1, 1), (1, 1, 0)]
ΠΠΎ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅, ΡΠ°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅Ρ Π²ΡΠ·ΡΠ²Π°ΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΡΡΠΎΠΊΠΈ ΠΈ ΡΠΈΡΠ»Π°. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ key
ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌΠΈ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ
ΡΡΠ½ΠΊΡΠΈΠΉ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠΏΠΈΡΠΎΠΊ, ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π±ΡΠ΄Π΅Ρ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½ Π»Π΅ΠΊΡΠΈΠΊΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ:
>>> x = ['ccc', 'd', 'bb', 'a']
>>>
>>> x.sort()
>>> x
['a', 'bb', 'ccc', 'd']
ΠΡΠ»ΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ Π΄Π°Π½Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ Π½Π΅ ΠΏΠΎ Π°Π»ΡΠ°Π²ΠΈΡΡ Π° ΠΏΠΎ Π΄Π»ΠΈΠ½Π΅ ΡΡΡΠΎΠΊ, ΡΠΎ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ΄Π΅Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ Π΄Π»ΠΈΠ½Ρ ΡΡΡΠΎΠΊΠΈ:
>>> def len_str(s):
... return len(s)
ΠΠΎΡΠ»Π΅, ΠΈΠΌΡ Π΄Π°Π½Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΈΡΠ²ΠΎΠΈΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ key
:
>>> x.sort(key=len_str)
>>> x
['a', 'd', 'bb', 'ccc']
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ reverse
ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠΉ Π² Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ True ΡΠΎΡΡΠΈΡΡΠ΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π² ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅:
>>> x.sort(key=len_str, reverse=True)
>>> x
['ccc', 'bb', 'a', 'd']
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ key
ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΎΡΠ΅Π½Ρ Π³ΠΈΠ±ΠΊΡΡ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΡ. ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅ΠΌ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΡΡΠΎΠΊΠΈ ΡΠΎΡΡΠΈΡΡΡΡΡΡ ΠΏΠΎ Π²ΡΠΎΡΠΎΠΌΡ ΡΠΈΠΌΠ²ΠΎΠ»Ρ:
>>> x = ['ubuu', 'waww', 'sdss','ecee']
>>>
>>> def sym2(s):
... return s[1]
...
>>> x.sort(key=sym2)
>>> x
['waww', 'ubuu', 'ecee', 'sdss']
ΠΠ»Ρ ΡΠΈΡΠ΅Π», ΡΠ°ΠΊ ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΠ²ΠΎΠΉ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΡΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈΡ
ΠΏΠΎ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎΠΌΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ:
>>> x = [-3, -10, -1, 10, 2, 0, 5]
>>>
>>> x.sort()
>>> x
[-10, -3, -1, 0, 2, 5, 10]
>>>
>>>
>>> def abs_num(n):
... return abs(n)
...
>>> x.sort(key=abs_num)
>>> x
[0, -1, 2, -3, 5, -10, 10]
ΠΠ°Π³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ Python — Sheregeda
ΠΠΎΠ½ΡΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ
__new__(cls, [...])
ΠΡΠΎ ΠΏΠ΅ΡΠ²ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ Π²ΡΠ·Π²Π°Π½ ΠΏΡΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°. ΠΠ½ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΊΠ»Π°ΡΡ ΠΈ ΠΏΠΎΡΠΎΠΌ Π»ΡΠ±ΡΠ΅ Π΄ΡΡΠ³ΠΈΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ΄ΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Ρ Π²__init__
.__new__
ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π²Π΅ΡΡΠΌΠ° ΡΠ΅Π΄ΠΊΠΎ, Π½ΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° Π±ΡΠ²Π°Π΅Ρ ΠΏΠΎΠ»Π΅Π·Π΅Π½, Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΊΠ»Π°ΡΡ Π½Π°ΡΠ»Π΅Π΄ΡΠ΅ΡΡΡ ΠΎΡ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΠ³ΠΎ (immutable) ΡΠΈΠΏΠ°, ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΠΊΠΎΡΡΠ΅ΠΆ (tuple) ΠΈΠ»ΠΈ ΡΡΡΠΎΠΊΠ°.__init__(self, [...])
ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡ ΠΊΠ»Π°ΡΡΠ°. ΠΠΌΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ Π²ΡΡ, Ρ ΡΠ΅ΠΌ Π±ΡΠ» Π²ΡΠ·Π²Π°Π½ ΠΏΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΡΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ (ΡΠ°ΠΊ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ ΠΌΡ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌx = SomeClass(10, 'foo')
,__init__
ΠΏΠΎΠ»ΡΡΠΈΡ10
ΠΈ'foo'
Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ².__init__
ΠΏΠΎΡΡΠΈ ΠΏΠΎΠ²ΡΠ΅ΠΌΠ΅ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΡΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΊΠ»Π°ΡΡΠΎΠ².
__del__(self)
ΠΡΠ»ΠΈ__new__
ΠΈ__init__
ΠΎΠ±ΡΠ°Π·ΡΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°,__del__
ΡΡΠΎ Π΅Π³ΠΎ Π΄Π΅ΡΡΡΡΠΊΡΠΎΡ. ΠΠ½ Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΄Π»Ρ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡdel x
(ΠΏΠΎΡΡΠΎΠΌΡ ΡΡΠΎΡ ΠΊΠΎΠ΄ Π½Π΅ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ΅Π½x.__del__()
). Π‘ΠΊΠΎΡΠ΅Π΅, ΠΎΠ½ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ±ΡΠ΅ΠΊΡ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ Π² ΡΠ±ΠΎΡΡΠΈΠΊ ΠΌΡΡΠΎΡΠ°. ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΠ΄ΠΎΠ±Π½ΠΎ Π΄Π»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΡΡΠ΅Π±ΠΎΠ²Π°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠΈΡΡΠΎΠΊ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ ΡΠΎΠΊΠ΅ΡΡ ΠΈΠ»ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΠ²Π΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ.
ΠΠ°Π³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ
__cmp__(self, other)
Π‘Π°ΠΌΡΠΉ Π±Π°Π·ΠΎΠ²ΡΠΉ ΠΈΠ· ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ. ΠΠ½, Π² Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΄Π»Ρ Π²ΡΠ΅Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ (>
,==
,!=
, ΠΈ ΡΠ΄.), Π½ΠΎ Π½Π΅ Π²ΡΠ΅Π³Π΄Π° ΡΠ°ΠΊ, ΠΊΠ°ΠΊ Π²Π°ΠΌ ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΠΎΡΡΡ Π΄Π²ΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ² ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡ ΠΊΡΠΈΡΠ΅ΡΠΈΡ, Π° ΡΠΎ ΡΡΠΎ ΠΎΠ΄ΠΈΠ½ Π±ΠΎΠ»ΡΡΠ΅ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΌΡ-Π½ΠΈΠ±ΡΠ΄Ρ Π΄ΡΡΠ³ΠΎΠΌΡ).__cmp__
Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Π΅ΡΠ½ΡΡΡ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ, Π΅ΡΠ»ΠΈself < other
, Π½ΠΎΠ»Ρ, Π΅ΡΠ»ΠΈself == other
, ΠΈ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Π² ΡΠ»ΡΡΠ°Π΅self > other
. ΠΠΎ, ΠΎΠ±ΡΡΠ½ΠΎ, Π»ΡΡΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ, ΡΠ΅ΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΠΈΡ Π²ΡΠ΅Ρ Π²__cmp__
. ΠΠΎ__cmp__
ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Ρ ΠΎΡΠΎΡΠΈΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΠΏΠΎΠ²ΡΠΎΡΠ΅Π½ΠΈΠΉ ΠΈ ΡΠ²Π΅Π»ΠΈΡΠΈΡΡ ΡΡΠ½ΠΎΡΡΡ, ΠΊΠΎΠ³Π΄Π° Π²ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠΈΡΡΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΊΡΠΈΡΠ΅ΡΠΈΠ΅ΠΌ.__eq__(self, other)
ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° ΡΠ°Π²Π΅Π½ΡΡΠ²Π°,==
.__ne__(self, other)
ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° Π½Π΅ΡΠ°Π²Π΅Π½ΡΡΠ²Π°,!=
.__lt__(self, other)
ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° ΠΌΠ΅Π½ΡΡΠ΅,<
.__gt__(self, other)
ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° Π±ΠΎΠ»ΡΡΠ΅,>
.__le__(self, other)
ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° ΠΌΠ΅Π½ΡΡΠ΅ ΠΈΠ»ΠΈ ΡΠ°Π²Π½ΠΎ,<=
.__ge__(self, other)
ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° Π±ΠΎΠ»ΡΡΠ΅ ΠΈΠ»ΠΈ ΡΠ°Π²Π½ΠΎ,>=
.
Π’Π°ΠΊ ΠΆΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· ΠΌΠ°Π³ΠΈΡΠ΅ΡΠΊΠΈΡ
ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΎΡ
Π²Π°ΡΠΈΡΡ Π²ΡΠ΅ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ. Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΊΠ»Π°ΡΡ-Π΄Π΅ΠΊΡΠΎΡΠ°ΡΠΎΡ @total_ordering
Π² ΠΌΠΎΠ΄ΡΠ»Π΅ functools
, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡ Π²ΡΠ΅ ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΠΎΡ Π²Π°Ρ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΠΎΠ»ΡΠΊΠΎ __eq__
ΠΈ Π΅ΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· __gt__
, __lt__
ΠΈ Ρ.ΠΏ.
Π§ΠΈΡΠ»ΠΎΠ²ΡΠ΅ ΠΌΠ°Π³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ
Π£Π½Π°ΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ
__pos__(self)
ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΄Π»Ρ ΡΠ½Π°ΡΠ½ΠΎΠ³ΠΎ ΠΏΠ»ΡΡΠ° (+some_object
)__neg__(self)
ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΎΡΡΠΈΡΠ°Π½ΠΈΡ(-some_object
)__abs__(self)
ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΄Π»Ρ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈabs()
.__invert__(self)
ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΈΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠΌ~
.__round__(self, n)
ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΄Π»Ρ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈround()
.n
ΡΡΠΎ ΡΠΈΡΠ»ΠΎ Π·Π½Π°ΠΊΠΎΠ² ΠΏΠΎΡΠ»Π΅ Π·Π°ΠΏΡΡΠΎΠΉ, Π΄ΠΎ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΎΠΊΡΡΠ³Π»ΠΈΡΡ.__floor__(self)
ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΄Π»Ρmath.floor()
, ΡΠΎ Π΅ΡΡΡ, ΠΎΠΊΡΡΠ³Π»Π΅Π½ΠΈΡ Π΄ΠΎ Π±Π»ΠΈΠΆΠ°ΠΉΡΠ΅Π³ΠΎ ΠΌΠ΅Π½ΡΡΠ΅Π³ΠΎ ΡΠ΅Π»ΠΎΠ³ΠΎ.__ceil__(self)
ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΄Π»Ρmath.ceil()
, ΡΠΎ Π΅ΡΡΡ, ΠΎΠΊΡΡΠ³Π»Π΅Π½ΠΈΡ Π΄ΠΎ Π±Π»ΠΈΠΆΠ°ΠΉΡΠ΅Π³ΠΎ Π±ΠΎΠ»ΡΡΠ΅Π³ΠΎ ΡΠ΅Π»ΠΎΠ³ΠΎ.__trunc__(self)
ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΄Π»Ρmath.trunc()
, ΡΠΎ Π΅ΡΡΡ, ΠΎΠ±ΡΠ΅Π·Π°Π½ΠΈΡ Π΄ΠΎ ΡΠ΅Π»ΠΎΠ³ΠΎ.
ΠΠ±ΡΡΠ½ΡΠ΅ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ
__add__(self, other)
Π‘Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅.__sub__(self, other)
ΠΡΡΠΈΡΠ°Π½ΠΈΠ΅.__mul__(self, other)
Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅.__floordiv__(self, other)
Π¦Π΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ΅ Π΄Π΅Π»Π΅Π½ΠΈΠ΅, ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ//
.__div__(self, other)
ΠΠ΅Π»Π΅Π½ΠΈΠ΅, ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ/
.__truediv__(self, other)
ΠΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ΅ Π΄Π΅Π»Π΅Π½ΠΈΠ΅. ΠΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡfrom __future__ import division
.__mod__(self, other)
ΠΡΡΠ°ΡΠΎΠΊ ΠΎΡ Π΄Π΅Π»Π΅Π½ΠΈΡ, ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ%
.__divmod__(self, other)
ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΄Π»Ρ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈdivmod()
.__pow__
ΠΠΎΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΡΡΠ΅ΠΏΠ΅Π½Ρ, ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ**
.__lshift__(self, other)
ΠΠ²ΠΎΠΈΡΠ½ΡΠΉ ΡΠ΄Π²ΠΈΠ³ Π²Π»Π΅Π²ΠΎ, ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ<<
.__rshift__(self, other)
ΠΠ²ΠΎΠΈΡΠ½ΡΠΉ ΡΠ΄Π²ΠΈΠ³ Π²ΠΏΡΠ°Π²ΠΎ, ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ>>
.__and__(self, other)
ΠΠ²ΠΎΠΈΡΠ½ΠΎΠ΅ Π, ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ&
.__or__(self, other)
ΠΠ²ΠΎΠΈΡΠ½ΠΎΠ΅ ΠΠΠ, ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ|
.__xor__(self, other)
ΠΠ²ΠΎΠΈΡΠ½ΡΠΉ xor, ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ^
.
ΠΡΡΠ°ΠΆΡΠ½Π½ΡΠ΅ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ
βOΠ±ΡΡΠ½ΠΎΠ΅β ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ some_object + other
ΠΡΡΠ°ΠΆΠ΅Π½Π½ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΏΠΎΡΡΠ΄ΠΊΠΎΠΌ ΡΠ»Π°Π³Π°Π΅ΠΌΡΡ
other + some_object
ΠΠ±ΡΠ΅ΠΊΡ ΡΠ»Π΅Π²Π° ΠΎΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° (other Π² ΠΏΡΠΈΠΌΠ΅ΡΠ΅) Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅ΡΡ ΠΎΠ±ΡΡΠ½ΠΎΠΉ Π½Π΅ΠΎΡΡΠ°ΠΆΡΠ½Π½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΡΡΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π°. Π Π½Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅, some_object.__radd__
Π±ΡΠ΄Π΅Ρ Π²ΡΠ·Π²Π°Π½ ΡΠΎΠ»ΡΠΊΠΎ Π΅ΡΠ»ΠΈ Π² other Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½ __add__
.
__radd__(self, other)
ΠΡΡΠ°ΠΆΡΠ½Π½ΠΎΠ΅ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.__rsub__(self, other)
ΠΡΡΠ°ΠΆΡΠ½Π½ΠΎΠ΅ Π²ΡΡΠΈΡΠ°Π½ΠΈΠ΅.__rmul__(self, other)
ΠΡΡΠ°ΠΆΡΠ½Π½ΠΎΠ΅ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅.__rfloordiv__(self, other)
ΠΡΡΠ°ΠΆΡΠ½Π½ΠΎΠ΅ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ΅ Π΄Π΅Π»Π΅Π½ΠΈΠ΅, ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ//
.__rdiv__(self, other)
ΠΡΡΠ°ΠΆΡΠ½Π½ΠΎΠ΅ Π΄Π΅Π»Π΅Π½ΠΈΠ΅, ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ/
.__rtruediv__(self, other)
ΠΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡfrom __future__ import division
.__rmod__(self, other)
ΠΡΡΠ°ΠΆΡΠ½Π½ΡΠΉ ΠΎΡΡΠ°ΡΠΎΠΊ ΠΎΡ Π΄Π΅Π»Π΅Π½ΠΈΡ, ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ%
.__rdivmod__(self, other)
ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΄Π»Ρ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈdivmod()
, ΠΊΠΎΠ³Π΄Π° Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡdivmod(other, self)
.__rpow__
ΠΡΡΠ°ΠΆΡΠ½Π½ΠΎΠ΅ Π²ΠΎΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΡΡΠ΅ΠΏΠ΅Π½Ρ, ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ**
.__rlshift__(self, other)
ΠΡΡΠ°ΠΆΡΠ½Π½ΡΠΉ Π΄Π²ΠΎΠΈΡΠ½ΡΠΉ ΡΠ΄Π²ΠΈΠ³ Π²Π»Π΅Π²ΠΎ, ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ<<
.__rrshift__(self, other)
ΠΡΡΠ°ΠΆΡΠ½Π½ΡΠΉ Π΄Π²ΠΎΠΈΡΠ½ΡΠΉ ΡΠ΄Π²ΠΈΠ³ Π²ΠΏΡΠ°Π²ΠΎ, ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ>>
.__rand__(self, other)
ΠΡΡΠ°ΠΆΡΠ½Π½ΠΎΠ΅ Π΄Π²ΠΎΠΈΡΠ½ΠΎΠ΅ Π, ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ&
.__ror__(self, other)
ΠΡΡΠ°ΠΆΡΠ½Π½ΠΎΠ΅ Π΄Π²ΠΎΠΈΡΠ½ΠΎΠ΅ ΠΠΠ, ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ|
.__rxor__(self, other)
ΠΡΡΠ°ΠΆΡΠ½Π½ΡΠΉ Π΄Π²ΠΎΠΈΡΠ½ΡΠΉ xor, ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ^
.
Π‘ΠΎΡΡΠ°Π²Π½ΠΎΠ΅ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅
x += 1 #Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ x = x + 1
__iadd__(self, other)
Π‘Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ.__isub__(self, other)
ΠΡΡΠΈΡΠ°Π½ΠΈΠ΅ Ρ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ.__imul__(self, other)
Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ.__ifloordiv__(self, other)
Π¦Π΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ΅ Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ, ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ//=
.__idiv__(self, other)
ΠΠ΅Π»Π΅Π½ΠΈΠ΅ Ρ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ, ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ/=
.__itruediv__(self, other)
ΠΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π΅ΡΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡfrom __future__ import division
.__imod__(self, other)
ΠΡΡΠ°ΡΠΎΠΊ ΠΎΡ Π΄Π΅Π»Π΅Π½ΠΈΡ Ρ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ, ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ%=
.__ipow__
ΠΠΎΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΡΡΠ΅ΠΏΠ΅Π½Ρ Ρ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ, ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ**=
.__ilshift__(self, other)
ΠΠ²ΠΎΠΈΡΠ½ΡΠΉ ΡΠ΄Π²ΠΈΠ³ Π²Π»Π΅Π²ΠΎ Ρ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ, ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ<<=
.__irshift__(self, other)
ΠΠ²ΠΎΠΈΡΠ½ΡΠΉ ΡΠ΄Π²ΠΈΠ³ Π²ΠΏΡΠ°Π²ΠΎ Ρ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ, ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ>>=
.__iand__(self, other)
ΠΠ²ΠΎΠΈΡΠ½ΠΎΠ΅ Π Ρ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ, ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ&=
.__ior__(self, other)
ΠΠ²ΠΎΠΈΡΠ½ΠΎΠ΅ ΠΠΠ Ρ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ, ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ|=
.__ixor__(self, other)
ΠΠ²ΠΎΠΈΡΠ½ΡΠΉ xor Ρ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ, ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ^=
.
ΠΠ°Π³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΠΏΠΎΠ²
__int__(self)
ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΠΏΠ° Π² int.__long__(self)
ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΠΏΠ° Π² long.__float__(self)
ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΠΏΠ° Π² float.__complex__(self)
ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΠΏΠ° Π² ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ.__oct__(self)
ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΠΏΠ° Π² Π²ΠΎΡΡΠΌΠ΅ΡΠΈΡΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ.__hex__(self)
ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΠΏΠ° Π² ΡΠ΅ΡΡΠ½Π°Π΄ΡΠ°ΡΠ΅ΡΠΈΡΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ.__index__(self)
ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΠΏΠ° ΠΊ int, ΠΊΠΎΠ³Π΄Π° ΠΎΠ±ΡΠ΅ΠΊΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΡΡΠ΅Π·Π°Ρ (Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Π²ΠΈΠ΄Π°[start:stop:step]
). ΠΡΠ»ΠΈ Π²Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΠ΅ ΡΠ²ΠΎΠΉ ΡΠΈΡΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΠΏ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΊΠ°ΠΊ ΠΈΠ½Π΄Π΅ΠΊΡ ΡΠΏΠΈΡΠΊΠ°, Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ__index__
.__trunc__(self)
ΠΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΏΡΠΈmath.trunc(self)
. ΠΠΎΠ»ΠΆΠ΅Π½ Π²Π΅ΡΠ½ΡΡΡ ΡΠ²ΠΎΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΎΠ±ΡΠ΅Π·Π°Π½Π½ΠΎΠ΅ Π΄ΠΎ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° (ΠΎΠ±ΡΡΠ½ΠΎ long).__coerce__(self, other)
ΠΠ΅ΡΠΎΠ΄ Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΠΊΠΈ Ρ ΠΎΠΏΠ΅ΡΠ°Π½Π΄Π°ΠΌΠΈ ΡΠ°Π·Π½ΡΡ ΡΠΈΠΏΠΎΠ².__coerce__
Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Π΅ΡΠ½ΡΡΡNone
Π΅ΡΠ»ΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΠΏΠΎΠ² Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. ΠΡΠ»ΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Π΅ΡΠ½ΡΡΡ ΠΏΠ°ΡΡ (ΠΊΠΎΡΡΠ΅ΠΆ ΠΈΠ· 2-Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²) ΠΈΠ· self ΠΈ other, ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡ ΡΠΈΠΏΡ.
ΠΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ²ΠΎΠΈΡ ΠΊΠ»Π°ΡΡΠΎΠ²
__str__(self)
ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈstr()
, Π²ΡΠ·Π²Π°Π½Π½ΠΎΠΉ Π΄Π»Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° Π²Π°ΡΠ΅Π³ΠΎ ΠΊΠ»Π°ΡΡΠ°.__repr__(self)
ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈrepr()
, Π²ΡΠ·Π²Π°Π½Π½ΠΎΠΉ Π΄Π»Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° Π²Π°ΡΠ΅Π³ΠΎ ΠΊΠ»Π°ΡΡΠ°.__unicode__(self)
ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈunicode()
, Π²ΡΠ·Π²Π°Π½Π½ΠΎΠΉ Π΄Π»Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° Π²Π°ΡΠ΅Π³ΠΎ ΠΊΠ»Π°ΡΡΠ°.unicode()
ΠΏΠΎΡ ΠΎΠΆ Π½Π°str()
, Π½ΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΡΡΠΎΠΊΡ Π² ΡΠ½ΠΈΠΊΠΎΠ΄Π΅. ΠΡΠ΄ΡΡΠ΅ ΠΎΡΡΠΎΡΠΎΠΆΠ½Ρ: Π΅ΡΠ»ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ Π²ΡΠ·ΡΠ²Π°Π΅Ρstr()
Π½Π° ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ΅ Π²Π°ΡΠ΅Π³ΠΎ ΠΊΠ»Π°ΡΡΠ°, Π° Π²Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠ»ΠΈ ΡΠΎΠ»ΡΠΊΠΎ__unicode__()
, ΡΠΎ ΡΡΠΎ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ.__format__(self, formatstr)
ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, ΠΊΠΎΠ³Π΄Π° ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Π²Π°ΡΠ΅Π³ΠΎ ΠΊΠ»Π°ΡΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΡΡΡΠΎΠΊ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΡΠΈΠ»Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ,"Hello, {0:abc}!".format(a)
ΠΏΡΠΈΠ²Π΅Π΄ΡΡ ΠΊ Π²ΡΠ·ΠΎΠ²Ρa.__format__("abc")
. ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π²Π°ΡΠΈΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ ΡΠΈΡΠ»ΠΎΠ²ΡΡ ΠΈΠ»ΠΈ ΡΡΡΠΎΠΊΠΎΠ²ΡΡ ΡΠΈΠΏΠΎΠ², ΠΊΠΎΡΠΎΡΡΠΌ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°Ρ ΠΎΡΠ΅ΡΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ ΠΊΠ°ΠΊΠΈΠ΅-Π½ΠΈΠ±ΡΠ΄Ρ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΠΎΠΏΡΠΈΠΈ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ.__hash__(self)
ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈhash()
, Π²ΡΠ·Π²Π°Π½Π½ΠΎΠΉ Π΄Π»Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° Π²Π°ΡΠ΅Π³ΠΎ ΠΊΠ»Π°ΡΡΠ°. ΠΠ΅ΡΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ Π±ΡΡΡΡΠΎΠ³ΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ ΠΊΠ»ΡΡΠ΅ΠΉ Π² ΡΠ»ΠΎΠ²Π°ΡΡΡ . ΠΠ°ΠΌΠ΅ΡΡΡΠ΅, ΡΡΠΎ Π² ΡΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΎΠ±ΡΡΠ½ΠΎ Π½ΡΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΠΈ__eq__
ΡΠΎΠΆΠ΅. Π ΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΡΠΉΡΠ΅ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΏΡΠ°Π²ΠΈΠ»ΠΎΠΌ:a == b
ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅Ρhash(a) == hash(b)
.__nonzero__(self)
ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈbool()
, Π²ΡΠ·Π²Π°Π½Π½ΠΎΠΉ Π΄Π»Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° Π²Π°ΡΠ΅Π³ΠΎ ΠΊΠ»Π°ΡΡΠ°. ΠΠΎΠ»ΠΆΠ½Π° Π²Π΅ΡΠ½ΡΡΡ True ΠΈΠ»ΠΈ False, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΎΠ³ΠΎ, ΠΊΠΎΠ³Π΄Π° Π²Ρ ΡΡΠΈΡΠ°Π΅ΡΠ΅ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌ True ΠΈΠ»ΠΈ False.__dir__(self)
ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈdir()
, Π²ΡΠ·Π²Π°Π½Π½ΠΎΠΉ Π½Π° ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ΅ Π²Π°ΡΠ΅Π³ΠΎ ΠΊΠ»Π°ΡΡΠ°. ΠΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠΏΠΈΡΠΎΠΊ Π°ΡΡΠΈΠ±ΡΡΠΎΠ².__sizeof__(self)
ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈsys.getsizeof()
, Π²ΡΠ·Π²Π°Π½Π½ΠΎΠΉ Π½Π° ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ΅ Π²Π°ΡΠ΅Π³ΠΎ ΠΊΠ»Π°ΡΡΠ°. ΠΠ΅ΡΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Π΅ΡΠ½ΡΡΡ ΡΠ°Π·ΠΌΠ΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π² Π±Π°ΠΉΡΠ°Ρ .
ΠΠΎΠ½ΡΡΠΎΠ»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π°ΡΡΠΈΠ±ΡΡΠ°ΠΌ
__getattr__(self, name)
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΄Π»Ρ ΡΠ»ΡΡΠ°Ρ, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΡΡΠ°Π΅ΡΡΡ ΠΎΠ±ΡΠ°ΡΠΈΡΡΡΡ ΠΊ Π°ΡΡΠΈΠ±ΡΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ (ΡΠΎΠ²ΡΠ΅ΠΌ ΠΈΠ»ΠΈ ΠΏΠΎΠΊΠ° Π΅ΡΡ). ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΠ° ΠΈ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ°ΡΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΠΊ, ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ ΠΎΠ± ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΡ Π°ΡΡΠΈΠ±ΡΡΠΎΠ² ΠΈ ΠΏΡ.__setattr__(self, name, value)
Π ΠΎΡΠ»ΠΈΡΠΈΠΈ ΠΎΡ__getattr__
,__setattr__
ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΈΠ½ΠΊΠ°ΠΏΡΡΠ»ΡΡΠΈΠΈ. ΠΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²Π°ΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π°ΡΡΠΈΠ±ΡΡΡ, Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠΎΠ³ΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π°ΡΡΠΈΠ±ΡΡ ΠΈΠ»ΠΈ Π½Π΅Ρ. Π’ΠΎ Π΅ΡΡΡ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π»ΡΠ±ΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π° Π΄Π»Ρ Π»ΡΠ±ΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π°ΡΡΠΈΠ±ΡΡΠΎΠ².__delattr__
ΠΡΠΎ ΡΠΎ ΠΆΠ΅, ΡΡΠΎ ΠΈ__setattr__
, Π½ΠΎ Π΄Π»Ρ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ Π°ΡΡΠΈΠ±ΡΡΠΎΠ², Π²ΠΌΠ΅ΡΡΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ.__getattribute__(self, name)
ΠΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°. ΠΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²Π°ΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ»ΡΡΠ°Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π°ΡΡΠΈΠ±ΡΡΠ°ΠΌ (Π° Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΊ Π½Π΅ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΌ, ΠΊΠ°ΠΊ__getattr__(self, name)
).
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠ΅ΠΉ
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΡ
ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ½ΡΡ
ΡΠΈΠΏΠΎΠ² Π² Python Π²Π»Π΅ΡΡΡ Π·Π° ΡΠΎΠ±ΠΎΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ
ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΎΠ². ΠΡΠΎΡΠΎΠΊΠΎΠ»Ρ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡ
ΠΎΠΆΠΈ Π½Π° ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ Π² Π΄ΡΡΠ³ΠΈΡ
ΡΠ·ΡΠΊΠ°Ρ
ΡΠ΅ΠΌ, ΡΡΠΎ ΠΎΠ½ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ Π½Π°Π±ΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ.
ΠΡΠΎΡΠΎΠΊΠΎΠ» Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΡ
ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ²: ΡΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°ΡΡ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ, Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ __len__
ΠΈ __getitem__
. ΠΡΠΎΡΠΎΠΊΠΎΠ» ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° ΡΡΠ΅Π±ΡΠ΅Ρ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΠΏΠ»ΡΡ __setitem__
ΠΈ __delitem__
. Π, Π½Π°ΠΊΠΎΠ½Π΅Ρ, Π΅ΡΠ»ΠΈ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅, ΡΡΠΎΠ±Ρ Π²Π°ΡΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΏΠ΅ΡΠ΅Π±ΠΈΡΠ°ΡΡ ΠΈΡΠ΅ΡΠ°ΡΠΈΠ΅ΠΉ, Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ __iter__
ΠΈ next()
.
__len__(self)
ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ΅. Π§Π°ΡΡΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΎΠ² Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΈ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ².__getitem__(self, key)
ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΡΠΈ Π΄ΠΎΡΡΡΠΏΠ΅ ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡself[key]
. Π’ΠΎΠΆΠ΅ ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΈ ΠΊ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΡ ΠΈ ΠΊ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Ρ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ². ΠΠΎΠ»ΠΆΠ΅Π½ Π²ΡΠ±ΡΠ°ΡΡΠ²Π°ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ:TypeError
Π΅ΡΠ»ΠΈ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ ΡΠΈΠΏ ΠΊΠ»ΡΡΠ° ΠΈKeyError
Π΅ΡΠ»ΠΈ ΠΊΠ»ΡΡΡ Π½Π΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ.__setitem__(self, key, value)
ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΡΠΈ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡself[nkey] = value
. Π§Π°ΡΡΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°. ΠΠΏΡΡΡ ΠΆΠ΅, Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π²ΡΠ±ΡΠ°ΡΡΠ²Π°ΡΡKeyError
ΠΈTypeError
Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ ΡΠ»ΡΡΠ°ΡΡ .__delitem__(self, key)
ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΡΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° (ΡΠΎ Π΅ΡΡΡdel self[key]
). ΠΡΠΎ ΡΠ°ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°. ΠΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π²ΡΠ±ΡΠ°ΡΡΠ²Π°ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅, Π΅ΡΠ»ΠΈ ΠΊΠ»ΡΡ Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ΅Π½.__iter__(self)
ΠΠΎΠ»ΠΆΠ΅Π½ Π²Π΅ΡΠ½ΡΡΡ ΠΈΡΠ΅ΡΠ°ΡΠΎΡ Π΄Π»Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°. ΠΡΠ΅ΡΠ°ΡΠΎΡΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΡΡ Π² ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅ ΡΠΈΡΡΠ°ΡΠΈΠΉ, Π³Π»Π°Π²Π½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π΄Π»Ρ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈiter()
ΠΈ Π² ΡΠ»ΡΡΠ°Π΅ ΠΏΠ΅ΡΠ΅Π±ΠΎΡΠ° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌfor x in container:
. ΠΡΠ΅ΡΠ°ΡΠΎΡΡ ΡΠ°ΠΌΠΈ ΠΏΠΎ ΡΠ΅Π±Π΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΈ ΠΎΠ½ΠΈ ΡΠΎΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄__iter__
, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ self.__reversed__(self)
ΠΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΡΡΠΎΠ±Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ Π΄Π»Ρ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈreversed()
. ΠΠΎΠ»ΠΆΠ΅Π½ Π²Π΅ΡΠ½ΡΡΡ ΠΎΠ±ΡΠ°ΡΠ½ΡΡ Π²Π΅ΡΡΠΈΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ. Π Π΅Π°Π»ΠΈΠ·ΡΠΉΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄ ΡΠΎΠ»ΡΠΊΠΎ Π΅ΡΠ»ΠΈ ΠΊΠ»Π°ΡΡ ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½Π½ΡΠΉ, ΠΊΠ°ΠΊ ΡΠΏΠΈΡΠΎΠΊ ΠΈΠ»ΠΈ ΠΊΠΎΡΡΠ΅ΠΆ.__contains__(self, item)
ΠΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ½ΠΎΡΡΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡin
ΠΈnot in
.__missing__(self, key)
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΡΠΈ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠΈ ΠΎΡdict
. ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΄Π»Ρ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ»ΡΡΠ°Ρ, ΠΊΠΎΠ³Π΄Π° ΠΏΡΡΠ°ΡΡΡΡ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΏΠΎ Π½Π΅ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅ΠΌΡ ΠΊΠ»ΡΡΡ.
ΠΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅
__instancecheck__(self, instance)
ΠΡΠΎΠ²Π΅ΡΡΠ΅Ρ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ ΡΠΊΠ·Π΅ΠΌΠ»ΠΏΡΡ ΡΠ»Π΅Π½ΠΎΠΌ Π²Π°ΡΠ΅Π³ΠΎ ΠΊΠ»Π°ΡΡΠ°isinstance(instance, class
.__subclasscheck__(self, subclass)
ΠΡΠΎΠ²Π΅ΡΡΠ΅Ρ, Π½Π°ΡΠ»Π΅Π΄ΡΠ΅ΡΡΡ Π»ΠΈ ΠΊΠ»Π°ΡΡ ΠΎΡ Π²Π°ΡΠ΅Π³ΠΎ ΠΊΠ»Π°ΡΡΠ°issubclass(subclass, class)
.
ΠΡΠ·ΡΠ²Π°Π΅ΠΌΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ
Π‘ΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΠΌΠ°Π³ΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ°ΠΌ Π²Π°ΡΠ΅Π³ΠΎ ΠΊΠ»Π°ΡΡΠ° Π²Π΅ΡΡΠΈ ΡΠ΅Π±Ρ ΡΠ°ΠΊ, ΠΊΠ°ΠΊ Π±ΡΠ΄ΡΠΎ ΠΎΠ½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΠΎ Π΅ΡΡΡ Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ Β«Π²ΡΠ·ΡΠ²Π°ΡΡΒ» ΠΈΡ , ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ ΠΈΡ Π² ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅.
__call__(self, [args...])
ΠΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π»ΡΠ±ΠΎΠΌΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ Π²Π°ΡΠ΅Π³ΠΎ ΠΊΠ»Π°ΡΡΠ° Π±ΡΡΡ Π²ΡΠ·Π²Π°Π½Π½ΡΠΌ ΠΊΠ°ΠΊ-Π±ΡΠ΄ΡΠΎ ΠΎΠ½ ΡΡΠ½ΠΊΡΠΈΡ.x()
ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΡΠΎ ΠΆΠ΅, ΡΡΠΎ ΠΈx.__call__()
, ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ².
ΠΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ°
ΠΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ° ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ Π΄Π²ΡΠΌΡ ΠΌΠ°Π³ΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ:
__enter__(self)
ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ, ΡΡΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ΄Π΅Π»Π°ΡΡ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° Π² Π½Π°ΡΠ°Π»Π΅ Π±Π»ΠΎΠΊΠ°, ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠΌwith
. ΠΠ°ΠΌΠ΅ΡΡΡΠ΅, ΡΡΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅__enter__
Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈ Π΅ΡΡΡ ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, Ρ ΠΊΠΎΡΠΎΡΡΠΌ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΡΠ°Π±ΠΎΡΠ° Π²Π½ΡΡΡΠΈwith
.__exit__(self, exception_type, exception_value, traceback)
ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ° ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π±Π»ΠΎΠΊ Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ (ΠΈΠ»ΠΈ ΠΏΡΠ΅ΡΠ²Π°Π½ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ°Π±ΠΎΡΡ). ΠΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ, ΡΠΈΡΡΠΊΠΈ, Π»ΡΠ±ΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Ρ Π½Π΅Π·Π°ΠΌΠ΅Π΄Π»ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΡΠ»Π΅ Π±Π»ΠΎΠΊΠ°with
. ΠΡΠ»ΠΈ Π±Π»ΠΎΠΊ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ ΡΡΠΏΠ΅ΡΠ½ΠΎ,exception_type
,exception_value
, ΠΈtraceback
Π±ΡΠ΄ΡΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Ρ Π²None
. Π Π΄ΡΡΠ³ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²Ρ ΡΠ°ΠΌΠΈ Π²ΡΠ±ΠΈΡΠ°Π΅ΡΠ΅, ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΡΠ²Π°ΡΡ Π»ΠΈ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ ΡΡΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ; Π΅ΡΠ»ΠΈ Π²Ρ ΡΠ΅ΡΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΠΈΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅, ΡΠ±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ__exit__
Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ True ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Π²ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½ΠΎ. ΠΡΠ»ΠΈ Π²Ρ Π½Π΅ Ρ ΠΎΡΠΈΡΠ΅, ΡΡΠΎΠ±Ρ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π±ΡΠ»ΠΎ ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΠ΅Π½ΠΎ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ°, ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΠ΅ Π΅ΠΌΡ ΡΠ»ΡΡΠΈΡΡΡΡ.
ΠΠ±ΡΡΡΠ°ΠΊΡΠ½ΡΠ΅ Π±Π°Π·ΠΎΠ²ΡΠ΅ ΠΊΠ»Π°ΡΡΡ
ΠΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠΎΠ²
ΠΠ΅ΡΠΊΡΠΈΠΏΡΠΎΡΡ Π°ΡΡΠΈΠ±ΡΡΠΎΠ² ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ» Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π°ΡΡΠΈΠ±ΡΡΠ°ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΠΈΠ»ΠΈ ΠΊΠ»Π°ΡΡΠ°. Π ΠΎΠ±ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΡ — ΡΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΡ, Π² ΠΊΠΎΡΠΎΡΡΡ
ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ²: __get__()
, __set__()
, ΠΈΠ»ΠΈ __delete__()
. Π‘ΡΠ΅Π΄ΠΈ ΡΠΆΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ
Π² Python Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π·Π²Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅: property
, classmethod
ΠΈ staticmethod
.
__get__(self, instance, instance_class)
ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΡΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½ΠΈΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈΠ· Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠ°.__set__(self, instance, value)
ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈΠ· Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠ°.__delete__(self, instance)
ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΄Π»Ρ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈΠ· Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠ°.
ΠΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
ΠΠΏΠ΅ΡΠ°ΡΠΎΡ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ Π½Π΅ ΠΊΠΎΠΏΠΈΡΡΠ΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡΡ, Π° ΡΠΎΠ»ΡΠΊΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ Π΅ΡΡ ΠΎΠ΄Π½Ρ ΡΡΡΠ»ΠΊΡ. ΠΠΎ Π΄Π»Ρ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΉ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΡ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ, ΠΈΠ½ΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΠΎΠ΅ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΡΡΠΎΠ±Ρ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΌΠ΅Π½ΡΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, Π½Π΅ Π·Π°ΡΡΠ°Π³ΠΈΠ²Π°Ρ Π΄ΡΡΠ³ΡΡ.
__copy__(self)
ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅copy.copy()
Π΄Π»Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° Π²Π°ΡΠ΅Π³ΠΎ ΠΊΠ»Π°ΡΡΠ°.copy.copy()
Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΏΠΎΠ²Π΅ΡΡ Π½ΠΎΡΡΠ½ΡΡ ΠΊΠΎΠΏΠΈΡ Π²Π°ΡΠ΅Π³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° — ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Ρ ΠΎΡΡ ΡΠ°ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΈ ΡΠΎΠ·Π΄Π°Π½ Π·Π°Π½ΠΎΠ²ΠΎ, Π²ΡΠ΅ Π΅Π³ΠΎ Π΄Π°Π½Π½ΡΠ΅ ΡΡΡΠ»Π°ΡΡΡΡ Π½Π° Π΄Π°Π½Π½ΡΠ΅ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°. Π ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π΄Π°Π½Π½ΡΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π±ΡΠ΄ΡΡ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡΡ ΠΈ Π² ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΠΎΠΌ.__deepcopy__(self, memodict={})
ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅copy.deepcopy()
Π΄Π»Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ² Π²Π°ΡΠ΅Π³ΠΎ ΠΊΠ»Π°ΡΡΠ°.copy.deepcopy()
Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π³Π»ΡΠ±ΠΎΠΊΡΡ ΠΊΠΎΠΏΠΈΡ Π²Π°ΡΠ΅Π³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° β ΠΊΠΎΠΏΠΈΡΡΡΡΡΡ ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΈ Π΅Π³ΠΎ Π΄Π°Π½Π½ΡΠ΅.memodict
ΡΡΠΎ ΠΊΡΡ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΡ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΠΎΠ½ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π»Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ΅Π½ΠΈΡ Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΉ ΡΠ΅ΠΊΡΡΡΠΈΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠΏΠΈΡΡΡΡΡΡ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΡΠ΅ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ . ΠΠΎΠ³Π΄Π° Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡΠ΄Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ Π°ΡΡΠΈΠ±ΡΡ, Π²ΡΠ·ΠΎΠ²ΠΈΡΠ΅ Π½Π° Π½ΡΠΌcopy.deepcopy()
Ρ ΠΏΠ΅ΡΠ²ΡΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌmemodict
.
ΠΡΡΠΎΡΠ½ΠΈΠΊ
ΠΠ΅ΡΠΎΠ΄Ρ ΡΠ»ΠΎΠ²Π°ΡΠ΅ΠΉ Π½Π° Python
ΠΠ° ΠΏΡΠΎΡΠ»ΠΎΠΌ ΡΡΠΎΠΊΠ΅, ΠΌΡ Π½Π°ΡΡΠΈΠ»ΠΈΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠ»ΠΎΠ²Π°ΡΠΈ, Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΠΈ ΡΠ΄Π°Π»ΡΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΈΠ· ΡΠ»ΠΎΠ²Π°ΡΡ. Π’Π΅ΠΏΠ΅ΡΡ Π½ΡΠΆΠ½ΠΎ Π½Π°ΡΡΠΈΡΡΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΎ ΡΠ»ΠΎΠ²Π°ΡΡΠΌΠΈ, ΡΡΠΎ-ΡΠΎ Ρ Π½ΠΈΠΌΠΈ Π΄Π΅Π»Π°ΡΡ. ΠΠ»Ρ ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ ΡΠΎ ΡΠ»ΠΎΠ²Π°ΡΡΠΌΠΈ Π² Python ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ². ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· Π½ΠΈΡ , ΠΌΡ ΡΠ΅ΠΉΡΠ°Ρ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ.
ΠΠ΅ΡΠΎΠ΄ clear()
ΠΠ΅ΡΠΎΠ΄ clear() ΡΠ΄Π°Π»ΡΠ΅Ρ Π²ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΈΠ· ΡΠ»ΠΎΠ²Π°ΡΡ ΠΈ Π½Π΅ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ².
my_count = {
Β Β Β Β 10: 'Π΄Π΅ΡΡΡΡ',
Β Β Β Β 11: 'ΠΎΠ΄ΠΈΠ½Π½Π°Π΄ΡΠ°ΡΡ',
Β Β Β Β 12: 'Π΄Π²Π΅Π½Π°Π΄ΡΠ°ΡΡ',
Β Β Β Β 13: 'ΡΡΠΈΠ½Π°Π΄ΡΠ°ΡΡ'
}
my_count.clear()
print(my_count)
{} // Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΏΡΡΡΠΎΠΉ ΡΠ»ΠΎΠ²Π°ΡΡ
ΠΠ΅ΡΠΎΠ΄ get()
ΠΠ΅ΡΠΎΠ΄ get() Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡ ΠΊΠ»ΡΡΡ Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°Ρ . ΠΠ°Π·Π²Π°Π½ΠΈΠ΅ ΠΊΠ»ΡΡΠ° Π²ΡΠ΅Π³Π΄Π° Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΌ. Π ΡΠ»ΡΡΠ°Π΅ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΏΠΎ Π½Π΅ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅ΠΌΡ ΠΊΠ»ΡΡΡ, Python Π²Π΅ΡΠ½Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ None. Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° get(), ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ, Π΅ΡΡΡ Π»ΠΈ ΡΠ°ΠΊΠΎΠΉ ΠΊΠ»ΡΡ Π² ΡΠ»ΠΎΠ²Π°ΡΠ΅. Π Π΅ΡΠ»ΠΈ Π΅ΡΡΡ, ΡΠΎ ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΠΊΠ»ΡΡΡ.
first_count = {
Β Β Β Β 14: 'ΡΠ΅ΡΡΡΠ½Π°Π΄ΡΠ°ΡΡ',
Β Β Β Β 15: 'ΠΏΡΡΠ½Π°Π΄ΡΠ°ΡΡ',
Β Β Β Β 16: 'ΡΠ΅ΡΡΠ½Π°Π΄ΡΠ°ΡΡ'
}
print(first_count.get(15))
ΠΏΡΡΠ½Π°Π΄ΡΠ°ΡΡ // Π²ΡΠ²Π΅Π΄Π΅Ρ Π½Π° ΡΠΊΡΠ°Π½
ΠΠ΅ΡΠΎΠ΄ pop()
Π ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°Ρ ΠΌΠ΅ΡΠΎΠ΄Π° pop() ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ ΠΊΠ»ΡΡ, Π° Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅.
second_count = {
Β Β Β Β 17: 'ΡΠ΅ΠΌΠ½Π°Π΄ΡΠ°ΡΡ',
Β Β Β Β 18: 'Π²ΠΎΡΠ΅ΠΌΠ½Π°Π΄ΡΠ°ΡΡ',
Β Β Β Β 19: 'Π΄Π΅Π²ΡΡΠ½Π°Π΄ΡΠ°ΡΡ'
}
print(second_count.pop(17))
ΡΠ΅ΠΌΠ½Π°Π΄ΡΠ°ΡΡ // ΡΠ°ΡΠΏΠ΅ΡΠ°ΡΠ°Π»ΠΎΡΡ Π½Π° ΡΠΊΡΠ°Π½Π΅
ΠΠ· ΡΠΏΠΈΡΠΊΠ° ΡΠ΄Π°Π»ΠΈΠ»Π°ΡΡ ΠΏΠ°ΡΠ° ΡΠ΅Π»ΠΈΠΊΠΎΠΌ. ΠΠ΅ΡΠΎΠ΄ pop() ΡΠ΄Π°Π»ΡΠ΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΈΠ· ΡΠ»ΠΎΠ²Π°ΡΡ, ΠΊΠ»ΡΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ, ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°Ρ . ΠΠΎΠΏΡΡΠΊΠ° ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π±Π΅Π· ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΈΠ»ΠΈ Ρ Π½Π΅ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ ΠΎΡΠΈΠ±ΠΊΠΈ.
print(second_count)
{18: 'Π²ΠΎΡΠ΅ΠΌΠ½Π°Π΄ΡΠ°ΡΡ', 19: 'Π΄Π΅Π²ΡΡΠ½Π°Π΄ΡΠ°ΡΡ'}
ΠΠ΅ΡΠΎΠ΄ popitem()
ΠΠ΅ΡΠΎΠ΄ popitem() Π½Π΅ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΈ ΡΠ΄Π°Π»ΡΠ΅Ρ ΠΈΠ· ΡΠ»ΠΎΠ²Π°ΡΡ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. ΠΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΈ, ΡΠ΄Π°Π»ΡΠ΅Ρ Π½ΠΎΠ²ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ.
third_count = {
Β Β Β Β 20: 'Π΄Π²Π°Π΄ΡΠ°ΡΡ',
Β Β Β Β 21: 'Π΄Π²Π°Π΄ΡΠ°ΡΡ ΠΎΠ΄ΠΈΠ½',
Β Β Β Β 22: 'Π΄Π²Π°Π΄ΡΠ°ΡΡ Π΄Π²Π°'
}
print(third_count.popitem())
(22, 'Π΄Π²Π°Π΄ΡΠ°ΡΡ Π΄Π²Π°') // Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ
ΠΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΡΡΠΎ ΠΎΡΡΠ°Π»ΠΎΡΡ Π² ΡΠ»ΠΎΠ²Π°ΡΠ΅:
print(third_count)
{20: 'Π΄Π²Π°Π΄ΡΠ°ΡΡ', 21: 'Π΄Π²Π°Π΄ΡΠ°ΡΡ ΠΎΠ΄ΠΈΠ½'}
ΠΠ΅ΡΠΎΠ΄ keys()
ΠΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΌΠ΅ΡΠΎΠ΄Π° keys(), ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π²ΡΠ΅ ΠΊΠ»ΡΡΠΈ ΠΈΠ· ΡΠ»ΠΎΠ²Π°ΡΡ.
fourth_count = {
Β Β Β Β 23: 'Π΄Π²Π°Π΄ΡΠ°ΡΡ ΡΡΠΈ',
Β Β Β Β 24: 'Π΄Π²Π°Π΄ΡΠ°ΡΡ ΡΠ΅ΡΡΡΠ΅',
Β Β Β Β 25: 'Π΄Π²Π°Π΄ΡΠ°ΡΡ ΠΏΡΡΡ'
}
print(fourth_count.keys())
dict_keys([23, 24, 25]) // Π²ΡΠ²ΠΎΠ΄ Π½Π° ΡΠΊΡΠ°Π½
ΠΠ΅ΡΠΎΠ΄ values()
ΠΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΌΠ΅ΡΠΎΠ΄Π° values(), ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΊΠ»ΡΡΠ΅ΠΉ ΠΈΠ· ΡΠ»ΠΎΠ²Π°ΡΡ.
fifth_count = {
Β Β Β Β 26: 'Π΄Π²Π°Π΄ΡΠ°ΡΡ ΡΠ΅ΡΡΡ',
Β Β Β Β 27: 'Π΄Π²Π°Π΄ΡΠ°ΡΡ ΡΠ΅ΠΌΡ',
Β Β Β Β 28: 'Π΄Π²Π°Π΄ΡΠ°ΡΡ Π²ΠΎΡΠ΅ΠΌΡ'
}
print(fifth_count.values())
// ΠΡΠ²ΠΎΠ΄ Π²ΡΠ΅Ρ
Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ
dict_values(['Π΄Π²Π°Π΄ΡΠ°ΡΡ ΡΠ΅ΡΡΡ', 'Π΄Π²Π°Π΄ΡΠ°ΡΡ ΡΠ΅ΠΌΡ', 'Π΄Π²Π°Π΄ΡΠ°ΡΡ Π²ΠΎΡΠ΅ΠΌΡ'])
ΠΠ΅ΡΠΎΠ΄ items()
ΠΠ΅ΡΠΎΠ΄ items() Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π²ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ «ΠΊΠ»ΡΡ-Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅» ΠΈΠ· ΡΠ»ΠΎΠ²Π°ΡΡ.
sixth_count = {
Β Β Β Β 29: 'Π΄Π²Π°Π΄ΡΠ°ΡΡ Π΄Π΅Π²ΡΡΡ',
Β Β Β Β 30: 'ΡΡΠΈΠ΄ΡΠ°ΡΡ',
Β Β Β Β 31: 'ΡΡΠΈΠ΄ΡΠ°ΡΡ ΠΎΠ΄ΠΈΠ½'
}
print(sixth_count.items()
// ΠΡΠ²ΠΎΠ΄ Π²ΡΠ΅Ρ
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²
dict_items([(29, 'Π΄Π²Π°Π΄ΡΠ°ΡΡ Π΄Π΅Π²ΡΡΡ'), (30, 'ΡΡΠΈΠ΄ΡΠ°ΡΡ'), (31, 'ΡΡΠΈΠ΄ΡΠ°ΡΡ ΠΎΠ΄ΠΈΠ½')])
Π‘ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° ΡΠ»ΠΎΠ²Π°ΡΡ ΠΏΠΎ ΠΊΠ»ΡΡΠ°ΠΌ
ΠΡ ΡΠΎΠ·Π΄Π°Π»ΠΈ ΡΠ»ΠΎΠ²Π°ΡΡ age, ΡΠΎΡΡΠΎΡΡΠΈΠΉ ΠΈΠ· ΠΏΠ°Ρ: ΠΊΠ»ΡΡ (ΠΈΠΌΡ) — Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ (Π²ΠΎΠ·ΡΠ°ΡΡ). Π€ΡΠ½ΠΊΡΠΈΡ sorted ΠΏΡΠΎΠΉΠ΄Π΅ΡΡΡ Π² ΡΠΈΠΊΠ»Π΅ for ΠΈ ΠΎΡΡΠΎΡΡΠΈΡΡΠ΅Ρ ΠΊΠ»ΡΡΠΈ (ΠΈΠΌΠ΅Π½Π°) ΠΏΠΎ Π°Π»ΡΠ°Π²ΠΈΡΡ.
age = {
Β Β Β Β 'Lorens': 29,
Β Β Β Β 'Viktor': 30,
Β Β Β Β 'Alex': 25
}
for i in sorted(age):
Β Β Β Β print(i,age[i])
Alex - 25
Lorens - 29
Viktor - 30
ΠΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ Π² Python
Π£ΡΠ»ΠΎΠ²ΠΈΠ΅ Π·Π°Π΄Π°ΡΠΈ:
Π£ Π½Π°Ρ Π΅ΡΡΡ ΡΠΏΠΈΡΠΎΠΊ Ρ ΡΠ΅ΡΠ΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΡΡΠΎΠΊ ΠΈ ΡΠΈΡΠ΅Π». ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ· ΡΠΏΠΈΡΠΊΠ° ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ»ΠΎΠ²Π°ΡΡ, Π³Π΄Π΅ ΠΊΠ»ΡΡΠ°ΠΌΠΈ Π±ΡΠ΄ΡΡ ΡΡΡΠΎΠΊΠΈ, Π° Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ — ΡΠΏΠΈΡΠΊΠΈ ΠΈΠ· ΡΠΈΡΠ΅Π».
cars_list = ['volvo', 1995, 5,'audi', 2019, 4, 'mazda', 2010]
Π Π΅ΡΠ΅Π½ΠΈΠ΅:
# Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΏΡΡΡΠΎΠΉ ΡΠ»ΠΎΠ²Π°ΡΡ
cars_dict = {}
# ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Ρ ΠΏΡΡΡΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ Π΄Π»Ρ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½Π½ΡΡ
ΡΡΡΠΎΠΊ
place_str = None
# ΠΠ΅ΡΠ΅Π±ΠΎΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΈΠ· ΡΠΏΠΈΡΠΊΠ° Π² ΡΠΈΠΊΠ»Π΅ Ρ ΡΠ΅Π»ΡΡ Π²ΡΡΡΠ½ΠΈΡΡ, ΡΠ΅ΠΊΡΡΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΡΡΠΎΠΊΠ° ΠΈΠ»ΠΈ ΡΠΈΡΠ»ΠΎ. ΠΡΠ»ΠΈ ΡΡΡΠΎΠΊΠ°, ΡΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ²ΡΠΉ Π±Π»ΠΎΠΊ ΡΡΠ»ΠΎΠ²ΠΈΡ if (ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠΏΠΈΡΠΊΠ° ΠΈΠ· ΡΠΈΡΠ΅Π» Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΠ»ΠΎΠ²Π°ΡΡ), Π΅ΡΠ»ΠΈ ΡΠΈΡΠ»ΠΎ, ΡΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡΡ Π²ΡΠΎΡΠΎΠΉ Π±Π»ΠΎΠΊ (else).
for element in cars_list:
Β Β Β Β if(type(element) == str):
Β Β Β Β Β Β Β Β cars_dict(element) = []
Β Β Β Β Β Β Β Β place_str = element
Β Β Β Β else:
Β Β Β Β Β Β Β Β cars_dist[place_str].append(element) # Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π² ΠΏΡΡΡΠΎΠΉ ΡΠΏΠΈΡΠΎΠΊ
print(cars_dist)
# Π‘ΠΎΠ·Π΄Π°Π»ΡΡ ΡΠ»ΠΎΠ²Π°ΡΡ Ρ ΠΏΠ°ΡΠ°ΠΌΠΈ "ΠΊΠ»ΡΡ - Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅"
{'volvo': [1995, 5], 'audi': [2019, 4], 'mazda': [2010]}
-
Π‘ΠΎΠ·Π΄Π°Π½ΠΎ 25.10.2019 10:33:33 -
ΠΠΈΡ Π°ΠΈΠ» Π ΡΡΠ°ΠΊΠΎΠ²
ΠΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΎΠ² ΡΠ°Π·ΡΠ΅ΡΠ°Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ Π°Π²ΡΠΎΡΠ° (ΠΠΈΡ Π°ΠΈΠ» Π ΡΡΠ°ΠΊΠΎΠ²) ΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΡΠ΅ΠΌΠΎΠΉ ΠΏΡΡΠΌΠΎΠΉ ΡΡΡΠ»ΠΊΠΎΠΉ Π½Π° ΡΠ°ΠΉΡ (http://myrusakov.ru)!
ΠΠΎΠ±Π°Π²Π»ΡΠΉΡΠ΅ΡΡ ΠΊΠΎ ΠΌΠ½Π΅ Π² Π΄ΡΡΠ·ΡΡ ΠΠΠΎΠ½ΡΠ°ΠΊΡΠ΅: http://vk.com/myrusakov.
ΠΡΠ»ΠΈ ΠΡ Ρ
ΠΎΡΠΈΡΠ΅ Π΄Π°ΡΡ ΠΎΡΠ΅Π½ΠΊΡ ΠΌΠ½Π΅ ΠΈ ΠΌΠΎΠ΅ΠΉ ΡΠ°Π±ΠΎΡΠ΅, ΡΠΎ Π½Π°ΠΏΠΈΡΠΈΡΠ΅ Π΅Ρ Π² ΠΌΠΎΠ΅ΠΉ Π³ΡΡΠΏΠΏΠ΅: http://vk.com/rusakovmy.
ΠΡΠ»ΠΈ ΠΡ Π½Π΅ Ρ
ΠΎΡΠΈΡΠ΅ ΠΏΡΠΎΠΏΡΡΡΠΈΡΡ Π½ΠΎΠ²ΡΠ΅ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Ρ Π½Π° ΡΠ°ΠΉΡΠ΅,
ΡΠΎ ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ΄ΠΏΠΈΡΠ°ΡΡΡΡ Π½Π° ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ: ΠΠΎΠ΄ΠΏΠΈΡΠ°ΡΡΡΡ Π½Π° ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ
ΠΡΠ»ΠΈ Ρ ΠΠ°Ρ ΠΎΡΡΠ°Π»ΠΈΡΡ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ Π²ΠΎΠΏΡΠΎΡΡ, Π»ΠΈΠ±ΠΎ Ρ ΠΠ°Ρ Π΅ΡΡΡ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ Π²ΡΡΠΊΠ°Π·Π°ΡΡΡΡ ΠΏΠΎ ΠΏΠΎΠ²ΠΎΠ΄Ρ ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠΈ, ΡΠΎ ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΡΡΠ°Π²ΠΈΡΡ ΡΠ²ΠΎΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ Π²Π½ΠΈΠ·Ρ ΡΡΡΠ°Π½ΠΈΡΡ.
ΠΡΠ»ΠΈ ΠΠ°ΠΌ ΠΏΠΎΠ½ΡΠ°Π²ΠΈΠ»ΡΡ ΡΠ°ΠΉΡ, ΡΠΎ ΡΠ°Π·ΠΌΠ΅ΡΡΠΈΡΠ΅ ΡΡΡΠ»ΠΊΡ Π½Π° Π½Π΅Π³ΠΎ (Ρ ΡΠ΅Π±Ρ Π½Π° ΡΠ°ΠΉΡΠ΅, Π½Π° ΡΠΎΡΡΠΌΠ΅, Π² ΠΊΠΎΠ½ΡΠ°ΠΊΡΠ΅):
ΠΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°Π±ΡΠΈΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΠΏΡΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΊΠΎΠ΄Π° Π½Π° Python
Π§Π°ΡΡΠΎ ΡΡΠ°Π»ΠΊΠΈΠ²Π°Π΅ΡΠ΅ΡΡ Ρ ΡΡΠ»ΠΎΠ²Π½ΡΠΌΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡΠΌΠΈ, Ρ ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΡΡΡΠ΄Π½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ? Π Π°ΡΡΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ ΠΏΡΠΎ ΡΠ°ΠΊΠΎΠΉ ΡΠ°Π±Π»ΠΎΠ½ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠ°ΠΊ ΡΠ°Π±ΡΠΈΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄.
Π€Π°Π±ΡΠΈΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ β ΡΡΠΎ ΡΠ°Π±Π»ΠΎΠ½ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΎΠ±ΡΠ΅Π³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ. Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ.
ΠΠΌΠ΅ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ»ΠΎΠΆΠ½ΠΎΠΉ ΡΡΡΡΠΊΡΡΡΡ ΠΈΠ· ΡΡΠ»ΠΎΠ²ΠΈΠΉ if/elif/else
Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ, ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π΅Π»Π΅Π³ΠΈΡΡΠ΅Ρ ΡΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΌΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ. ΠΡΠΈ ΡΠ°ΠΊΠΎΠΌ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄Π΅ ΠΊΠΎΠ΄ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠΏΡΠΎΡΠ°Π΅ΡΡΡ, ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠ΄ΠΎΠ±Π½ΡΠΌ Π΄Π»Ρ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ.
ΠΡΠ΅Π΄ΡΡΠ°Π²ΡΡΠ΅ ΡΠ΅Π±Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠΌΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ Song Π² String. ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ. ΠΡΠΈ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΡΡΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ Π² ΠΎΠ΄Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ»ΠΈ ΠΌΠ΅ΡΠΎΠ΄Π΅, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ Π²ΡΡ Π»ΠΎΠ³ΠΈΠΊΡ:
#serializer_demo.py import json import xml.etree.ElementTree as et class Song: def __init__(self, song_id, title, artist): self.song_id = song_id self.title = title self.artist = artist class SongSerializer: def serialize(self, song, format): if format == 'JSON': song_info = { 'id': song.song_id, 'title': song.title, 'artist': song.artist } return json.dumps(song_info) elif format == 'XML': song_info = et.Element('song', attrib={'id': song.song_id}) title = et.SubElement(song_info, 'title') title.text = song.title artist = et.SubElement(song_info, 'artist') artist.text = song.artist return et.tostring(song_info, encoding='unicode') else: raise ValueError(format)
Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²ΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π΅ΡΡΡ Π±Π°Π·ΠΎΠ²ΡΠΉ ΠΊΠ»Π°ΡΡ Song Π΄Π»Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΠ΅ΡΠ½ΠΈ ΠΈ ΠΊΠ»Π°ΡΡ SongSerializer, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²ΡΠ²Π°Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ Song Π² Π΅Π³ΠΎ ΡΡΡΠΎΠΊΠΎΠ²ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° format.
ΠΠ΅ΡΠΎΠ΄ .serialize() ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π΄Π²Π° ΡΠ°Π·Π½ΡΡ ΡΠΎΡΠΌΠ°ΡΠ°: JSON ΠΈ XML. ΠΡΠ±ΠΎΠΉ Π΄ΡΡΠ³ΠΎΠΉ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΉ ΡΠΎΡΠΌΠ°Ρ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ValueError.
ΠΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΎΠΉ Python, ΡΡΠΎΠ±Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΊΠΎΠ΄:
>>> import serializer_demo as sd >>> song = sd.Song('1', 'Water of Love', 'Dire Straits') >>> serializer = sd.SongSerializer() >>> serializer.serialize(song, 'JSON') '{"id": "1", "title": "Water of Love", "artist": "Dire Straits"}' >>> serializer.serialize(song, 'XML') '<song><title>Water of Love</title><artist>Dire Straits</artist></song>' >>> serializer.serialize(song, 'YAML') Traceback (most recent call last): File "<stdin>", line 1, in <module> File "./serializer_demo.py", line 30, in serialize raise ValueError(format) ValueError: YAML
Π‘ΠΎΠ·Π΄Π°ΡΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ Song ΠΈ serializer, Π·Π°ΡΠ΅ΠΌ Song ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅ΡΡΡ Π² ΡΡΡΠΎΠΊΠΎΠ²ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° .serialize(). ΠΠ΅ΡΠΎΠ΄ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΎΠ±ΡΠ΅ΠΊΡ Song ΠΈ ΡΡΡΠΎΠΊΠΎΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. ΠΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ Π²ΡΠ·ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ YAML Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠΎΡΠΌΠ°ΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ serializer, ΠΏΠΎΡΡΠΎΠΌΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ValueError.
ΠΡΠΎ ΠΊΠΎΡΠΎΡΠΊΠΈΠΉ ΠΈ ΡΠΏΡΠΎΡΠ΅Π½Π½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ, Π½ΠΎ Π² Π½Π΅ΠΌ Π΅ΡΡΡ ΡΡΠΈ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΡ Π²Π΅ΡΠ²ΠΈ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°Π²ΠΈΡΡΡ ΠΎΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° format ΠΈ ΡΡΠ»ΠΎΠΆΠ½ΡΡΡ ΠΊΠΎΠ΄.
ΠΡΠΎΠ±Π»Π΅ΠΌΡ ΡΠ»ΠΎΠΆΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Ρ ΡΡΠ»ΠΎΠ²ΠΈΡΠΌΠΈ
ΠΡΠΈΠΌΠ΅Ρ Π²ΡΡΠ΅ ΡΠ°ΡΠΊΡΡΠ²Π°Π΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, Ρ ΠΊΠΎΡΠΎΡΡΠΌΠΈ Π²Ρ ΡΡΠΎΠ»ΠΊΠ½Π΅ΡΠ΅ΡΡ Π² ΡΠ»ΠΎΠΆΠ½ΠΎΠΌ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠΌ ΠΊΠΎΠ΄Π΅. Π‘ΡΡΡΠΊΡΡΡΡ if/elif/else
ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π½ΠΎ ΠΎΠ½ΠΈ ΡΡΠ»ΠΎΠΆΠ½ΡΡΡ ΡΡΠ΅Π½ΠΈΠ΅, Π²ΠΎΡΠΏΡΠΈΡΡΠΈΠ΅ ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ.
ΠΠΎΠ΄ ΡΠ»ΠΎΠΆΠ΅Π½ Π΅ΡΠ΅ ΠΈ ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΌΠ½ΠΎΠ³ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ. Π‘ΠΎΠ³Π»Π°ΡΠ½ΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΠΈ, ΠΌΠΎΠ΄ΡΠ»Ρ, ΠΊΠ»Π°ΡΡ ΠΈ Π΄Π°ΠΆΠ΅ ΠΌΠ΅ΡΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ½Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΎΠ΄Π½Ρ ΡΡΠ½ΠΊΡΠΈΡ Π² ΠΊΠΎΠ΄Π΅ ΠΈ ΠΈΠΌΠ΅ΡΡ ΠΏΡΠΈΡΠΈΠ½Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠ²ΠΎΠΈΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΉ.
ΠΠ΅ΡΠΎΠ΄ .serialize() Π² SongSerializer ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡΡΡ ΠΏΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠΌ ΠΏΡΠΈΡΠΈΠ½Π°ΠΌ. Π’Π°ΠΊΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ. ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π²ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ ΡΠΈΡΡΠ°ΡΠΈΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΈΠ΄Π΅ΡΡΡ Π²Π½ΠΎΡΠΈΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ:
- ΠΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ Π½ΠΎΠ²ΡΠΉ ΡΠΎΡΠΌΠ°Ρ: Π½ΡΠΆΠ½ΠΎ Π²Π½ΠΎΡΠΈΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΠΌΠ΅ΡΠΎΠ΄, ΡΡΠΎΠ±Ρ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π² Π΄Π°Π½Π½ΡΠΉ ΡΠΎΡΠΌΠ°Ρ.
- ΠΠ·ΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ Song: Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΠ²ΠΎΠΉΡΡΠ² ΠΊΠ»Π°ΡΡΠ° Song ΠΏΠΎΡΡΠ΅Π±ΡΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π΄Π»Ρ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠΉ ΡΡΡΡΠΊΡΡΡΡ.
- ΠΠ·ΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΡΡΡΠΎΠΊΠΎΠ²ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠΎΡΠΌΠ°ΡΠ°Β (ΠΏΡΠΎΡΡΠΎΠΉΒ JSON ΠΈ JSON API): Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ .serialize() Π²ΠΌΠ΅ΡΡΠ΅ ΡΠΎ ΡΡΡΠΎΠΊΠΎΠ²ΡΠΌ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΡΠΎΡΠΌΠ°ΡΠ°, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΆΠ΅ΡΡΠΊΠΎ Π·Π°ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΎ Π² ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠ΅ΡΠΎΠ΄Π° .serialize().
Π ΠΈΠ΄Π΅Π°Π»Π΅, Π»ΡΠ±ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π²Π½ΠΎΡΠΈΡΡΡ Π±Π΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄Π°Β .serialize().
Π ΠΏΠΎΠΈΡΠΊΠ°Ρ ΠΎΠ±ΡΠ΅Π³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°
ΠΡΠ»ΠΈ Π²Ρ Π²ΠΈΠ΄ΠΈΡΠ΅ ΡΠ»ΠΎΠΆΠ½ΡΠΉ ΠΊΠΎΠ΄ Ρ ΡΡΠ»ΠΎΠ²ΠΈΡΠΌΠΈ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅ ΠΎΠ±ΡΠΈΠ΅ ΡΠ΅Π»ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΎΡΠ²Π΅ΡΠ²Π»Π΅Π½ΠΈΡ.
ΠΠΎΠ΄, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ if/elif/else
, ΠΎΠ±ΡΡΠ½ΠΎ ΠΈΠΌΠ΅Π΅Ρ ΠΎΠ±ΡΡΡ ΡΠ΅Π»Ρ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΡΡΡ ΠΏΠΎ-ΡΠ°Π·Π½ΠΎΠΌΡ. ΠΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΉ Π²ΡΡΠ΅ ΠΊΠΎΠ΄ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ Song Π² ΡΡΡΠΎΡΠ½ΡΠΉ ΡΠΎΡΠΌΠ°Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ°Π·Π½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠΉ Π²Π΅ΡΠΊΠ΅.
ΠΡΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ ΠΎΠ±ΡΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ Π·Π°ΠΌΠ΅Π½Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π²Π΅ΡΠ²ΠΈ. Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²ΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠ°ΠΊΠΎΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ Song ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΡΡΠΎΠΊΡ.
ΠΠΎΠ³Π΄Π° Π΅ΡΡΡ ΠΎΠ±ΡΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, ΠΌΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠΏΠΎΡΠΎΠ±Π°.
Π ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π²ΡΡΠ΅ ΠΌΡ ΡΠ½Π°ΡΠ°Π»Π° ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΠΌ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π² JSON ΠΈ XML, Π° Π·Π°ΡΠ΅ΠΌ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ΅ΡΠ°Π΅Ρ, ΠΊΠ°ΠΊΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΎΡΠΌΠ°ΡΠ°. ΠΡΠΎΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΠΎΡΠ΅Π½ΠΈΠ²Π°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ format ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ Π΅Π³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ.
Π ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΡΠ°Π·Π΄Π΅Π»Π°Ρ Π²Ρ ΡΠ·Π½Π°Π΅ΡΠ΅, ΠΊΠ°ΠΊ Π²Π½ΠΎΡΠΈΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ β ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡΡΒ ΡΠ΅ΡΠ°ΠΊΡΠΎΡΠΈΠ½Π³ ΠΊΠΎΠ΄Π°.
Π Π΅ΡΠ°ΠΊΡΠΎΡΠΈΠ½Π³ ΠΊΠΎΠ΄Π° Π² ΠΆΠ΅Π»Π°Π΅ΠΌΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ
ΠΠ΅Π»Π°Π΅ΠΌΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ β ΡΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΈΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ Song ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΡΡΠΎΠΊΠΎΠ²ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅.
ΠΠ΅ΡΠ²ΡΠΌ ΡΠ°Π³ΠΎΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅ΡΠ°ΠΊΡΠΎΡΠΈΠ½Π³ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΡ
ΠΎΡΠ²Π΅ΡΠ²Π»Π΅Π½ΠΈΠΉ Π² ΡΡΠΎΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ. ΠΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Π½ΠΎΠ²ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ ._serialize_to_json() ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Π΅ΠΌ Π² Π½Π΅Π³ΠΎ ΠΊΠΎΠ΄ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ JSON. ΠΠ°ΡΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌ ΠΊΠ»ΠΈΠ΅Π½Ρ Π΄Π»Ρ Π²ΡΠ·ΠΎΠ²Π°, Π²ΠΌΠ΅ΡΡΠΎ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π² ΡΠ΅Π»Π΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° if
:
class SongSerializer: def serialize(self, song, format): if format == 'JSON': return self._serialize_to_json(song) # The rest of the code remains the same def _serialize_to_json(self, song): payload = { 'id': song.song_id, 'title': song.title, 'artist': song.artist } return json.dumps(payload)
ΠΠΎΡΠ»Π΅ Π²Π½Π΅ΡΠ΅Π½ΠΈΡ ΡΡΠΈΡ
ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΎΡΡΠ°Π»ΠΎΡΡ ΠΏΡΠ΅ΠΆΠ½ΠΈΠΌ. ΠΠ°ΡΠ΅ΠΌ Π΄Π΅Π»Π°Π΅ΠΌ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ Π΄Π»Ρ XML, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡ Π½ΠΎΠ²ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ ._serialize_to_xml(), ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π² Π½Π΅Π³ΠΎ ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡ Π²Π΅ΡΠΊΡ elif
Π΄Π»Ρ Π²ΡΠ·ΠΎΠ²Π°.
Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ ΠΏΠ΅ΡΠ΅ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠΉ ΠΊΠΎΠ΄:
class SongSerializer: def serialize(self, song, format): if format == 'JSON': return self._serialize_to_json(song) elif format == 'XML': return self._serialize_to_xml(song) else: raise ValueError(format) def _serialize_to_json(self, song): payload = { 'id': song.song_id, 'title': song.title, 'artist': song.artist } return json.dumps(payload) def _serialize_to_xml(self, song): song_element = et.Element('song', attrib={'id': song.song_id}) title = et.SubElement(song_element, 'title') title.text = song.title artist = et.SubElement(song_element, 'artist') artist.text = song.artist return et.tostring(song_element, encoding='unicode')
ΠΠΎΠ²Π°Ρ Π²Π΅ΡΡΠΈΡ Π²ΠΎΡΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅ΡΡΡ ΠΏΡΠΎΡΠ΅, Π½ΠΎ Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ»ΡΡΡΠ°ΡΡ Π΄Π°Π»ΡΡΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π±Π°Π·ΠΎΠ²ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ°Π±ΡΠΈΡΠ½ΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π°.
ΠΠ°Π·ΠΎΠ²Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠ°Π±ΡΠΈΡΠ½ΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π°
ΠΠ»Π°Π²Π½Π°Ρ ΠΈΠ΄Π΅Ρ ΡΠ°Π±ΡΠΈΡΠ½ΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΌΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ Π·Π° ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, ΠΊΠ°ΠΊΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°. ΠΡΠΈΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ Π² Π½Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ format.
Π§ΡΠΎΠ±Ρ Π·Π°Π²Π΅ΡΡΠΈΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠ°Π±ΡΠΈΡΠ½ΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π°, Π²Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΠ΅ Π½ΠΎΠ²ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ ._get_serializer(), ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΆΠ΅Π»Π°Π΅ΠΌΡΠΉ ΡΠΎΡΠΌΠ°Ρ. ΠΠ½ ΠΎΡΠ΅Π½ΠΈΠ²Π°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ format ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ:
class SongSerializer: def _get_serializer(self, format): if format == 'JSON': return self._serialize_to_json elif format == 'XML': return self._serialize_to_xml else: raise ValueError(format)
Π’Π΅ΠΏΠ΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΌΠ΅ΡΠΎΠ΄ .serialize() Π² SongSerializer Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ._get_serializer(), ΡΡΠΎΠ±Ρ Π·Π°Π²Π΅ΡΡΠΈΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠ°Π±ΡΠΈΡΠ½ΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π°. ΠΠΎΡ ΡΠ°ΠΊ:
class SongSerializer: def serialize(self, song, format): serializer = self._get_serializer(format) return serializer(song) def _get_serializer(self, format): if format == 'JSON': return self._serialize_to_json elif format == 'XML': return self._serialize_to_xml else: raise ValueError(format) def _serialize_to_json(self, song): payload = { 'id': song.song_id, 'title': song.title, 'artist': song.artist } return json.dumps(payload) def _serialize_to_xml(self, song): song_element = et.Element('song', attrib={'id': song.song_id}) title = et.SubElement(song_element, 'title') title.text = song.title artist = et.SubElement(song_element, 'artist') artist.text = song.artist return et.tostring(song_element, encoding='unicode')
ΠΠΊΠΎΠ½ΡΠ°ΡΠ΅Π»ΡΠ½Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΡΠ°Π±ΡΠΈΡΠ½ΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π°.
ΠΡΠΎ β ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΡΠ°Π±Π»ΠΎΠ½Π°. ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠΌ-ΠΏΡΠΎΠ΄ΡΠΊΡΠΎΠΌ, Π²Β Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΡΠΎΠ΄ΡΠΊΡ β ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Song ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΡΡΠΎΠΊΠΎΠ²ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅.
ΠΠ΅ΡΠΎΠ΄Ρ ._serialize_to_json() ΠΈ ._serialize_to_xml() ΡΠ²Π»ΡΡΡΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΌΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΠΌΠΈ ΠΏΡΠΎΠ΄ΡΠΊΡΠ°.
ΠΠ°ΠΊΠΎΠ½Π΅Ρ, ΠΌΠ΅ΡΠΎΠ΄ ._get_serializer() ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠΌ-ΡΠΎΠ·Π΄Π°ΡΠ΅Π»Π΅ΠΌ. Π‘ΠΎΠ·Π΄Π°ΡΠ΅Π»Ρ ΡΠ΅ΡΠ°Π΅Ρ, ΠΊΠ°ΠΊΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ.
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π²Ρ Π½Π°ΡΠ°Π»ΠΈ Ρ ΡΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π°, Π²ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΡΠ°Π±ΡΠΈΡΠ½ΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° ΡΠ²Π»ΡΡΡΡΡ ΡΠ°ΡΡΡΠΌΠΈ ΠΊΠ»Π°ΡΡΠ° SongSerializer.
ΠΠ±ΡΡΠ½ΠΎ ΡΡΠΎ Π½Π΅ ΡΠ°ΠΊ, ΠΊΠ°ΠΊ Π²ΠΈΠ΄Π½ΠΎ, Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ self. ΠΡΠΎ ΠΏΡΠΈΠ·Π½Π°ΠΊ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΎΠ½ΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ ΠΊΠ»Π°ΡΡΠ° SongSerializer, Π° ΠΌΠΎΠ³ΡΡ ΡΡΠ°ΡΡ Π²Π½Π΅ΡΠ½ΠΈΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ:
class SongSerializer: def serialize(self, song, format): serializer = get_serializer(format) return serializer(song) def get_serializer(format): if format == 'JSON': return _serialize_to_json elif format == 'XML': return _serialize_to_xml else: raise ValueError(format) def _serialize_to_json(song): payload = { 'id': song.song_id, 'title': song.title, 'artist': song.artist } return json.dumps(payload) def _serialize_to_xml(song): song_element = et.Element('song', attrib={'id': song.song_id}) title = et.SubElement(song_element, 'title') title.text = song.title artist = et.SubElement(song_element, 'artist') artist.text = song.artist return et.tostring(song_element, encoding='unicode')
ΠΠ΅Ρ Π°Π½ΠΈΠΊΠ° ΡΠ°Π±ΡΠΈΡΠ½ΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° Π²ΡΠ΅Π³Π΄Π° ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Π°. ΠΠ»ΠΈΠ΅Π½ΡΒ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°. ΠΠ½ Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°Π΅Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΎΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°-ΡΠΎΠ·Π΄Π°ΡΠ΅Π»Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ.
Π‘ΠΎΠ·Π΄Π°ΡΠ΅Π»Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΊΠ»ΠΈΠ΅Π½ΡΡ, Π° ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ²ΠΎΠ΅ΠΉ Π·Π°Π΄Π°ΡΠΈ.
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠΎΡ ΠΆΠ΅ Π½Π°Π±ΠΎΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ Π² ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠΌ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ΅ Python, ΡΡΠΎΠ±Ρ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΎΡΡ:
>>> import serializer_demo as sd >>> song = sd.Song('1', 'Water of Love', 'Dire Straits') >>> serializer = sd.SongSerializer() >>> serializer.serialize(song, 'JSON') '{"id": "1", "title": "Water of Love", "artist": "Dire Straits"}' >>> serializer.serialize(song, 'XML') '<song><title>Water of Love</title><artist>Dire Straits</artist></song>' >>> serializer.serialize(song, 'YAML') Traceback (most recent call last): File "<stdin>", line 1, in <module> File "./serializer_demo.py", line 13, in serialize serializer = get_serializer(format) File "./serializer_demo.py", line 23, in get_serializer raise ValueError(format) ValueError: YAML
ΠΡ ΡΠΎΠ·Π΄Π°Π΅ΡΠ΅ Song ΠΈ serializer ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ serializer Π΄Π»Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Song Π² ΡΡΡΠΎΠΊΠΎΠ²ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΡΠΎΡΠΌΠ°ΡΠ°. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ YAML Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΠΌ ΡΠΎΡΠΌΠ°ΡΠΎΠΌ, ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ ValueError.
Π€Π°Π±ΡΠΈΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π² Π»ΡΠ±ΠΎΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (ΠΊΠ»ΠΈΠ΅Π½Ρ) Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° (ΠΏΡΠΎΠ΄ΡΠΊΡΠ°), ΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ ΡΡΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°. ΠΠ°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π΅ Π² ΡΠΎΠ·Π΄Π°ΡΠ΅Π»Π΅.
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠΈΡΠΎΠΊΠΈΠΉ ΡΠΏΠ΅ΠΊΡΡ ΠΏΠΎΡ ΠΎΠΆΠΈΡ Π·Π°Π΄Π°Ρ, ΠΏΠΎΡΡΠΎΠΌΡ Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅ΡΡ.
ΠΠ°ΠΌΠ΅Π½Π° ΡΠ»ΠΎΠΆΠ½ΠΎΠ³ΠΎ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°:Β ΡΠ»ΠΎΠΆΠ½ΡΠ΅ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΡΡΡΠΊΡΡΡΡ if/elif/else
ΡΡΡΠ΄Π½ΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡ Π½ΠΎΠ²ΡΠ΅ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π²Π΅ΡΠΊΠΈ.
Π€Π°Π±ΡΠΈΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ β Ρ ΠΎΡΠΎΡΠ°Ρ Π·Π°ΠΌΠ΅Π½Π°, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ ΡΠ΅Π»ΠΎ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠΉ Π²Π΅ΡΠΊΠΈ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ»ΠΈ ΠΊΠ»Π°ΡΡΡ Ρ ΠΎΠ±ΡΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ, Π° ΡΠΎΠ·Π΄Π°ΡΠ΅Π»Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ.
ΠΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ ΡΠΎΠ΄ΡΡΠ²Π΅Π½Π½ΡΡ
ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΈΠ· Π²Π½Π΅ΡΠ½ΠΈΡ
Π΄Π°Π½Π½ΡΡ
:Β ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΡΠ΅ ΡΠ΅Π±Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠΎΡΡΡΠ΄Π½ΠΈΠΊΠ°Ρ
ΠΈΠ· Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
.
ΠΠ°ΠΏΠΈΡΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠΎΡΡΡΠ΄Π½ΠΈΠΊΠΎΠ² Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ Π΄ΠΎΠ»ΠΆΠ½ΠΎΡΡΡΠΌΠΈ: ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΡ, ΠΎΡΠΈΡΠ½ΡΠ΅ ΠΊΠ»Π΅ΡΠΊΠΈ, ΡΠΎΡΠ³ΠΎΠ²ΡΠ΅ ΠΏΠ°ΡΡΠ½Π΅ΡΡ ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅. ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ Ρ
ΡΠ°Π½ΠΈΡΡ Π² Π·Π°ΠΏΠΈΡΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠΈΠΉ ΡΠΎΡΡΡΠ΄Π½ΠΈΠΊΠ°, Π° Π·Π°ΡΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°Π±ΡΠΈΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΈΠ· ΠΎΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π² Π·Π°ΠΏΠΈΡΠΈ.
ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ:Β ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²ΡΠ²Π°ΡΡ ΡΠΏΡΡΠ½ΠΈΠΊΠΎΠ²ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ Π² Π΄ΡΡΠ³ΡΡ, Π½ΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΡΡΠΎΠ²Π½ΡΠΌΠΈ ΡΠΎΡΠ½ΠΎΡΡΠΈ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ.
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π²ΡΠ±ΡΠ°ΡΡ ΠΎΠΏΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΡΠ΅Ρ Π°Π»Π³ΠΎΡΠΈΡΠΌ. Π€Π°Π±ΡΠΈΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΡΠΎΠΉ ΠΎΠΏΡΠΈΠΈ.
ΠΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΠΏΠΎΡ ΠΎΠΆΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ Π² ΠΎΠ±ΡΠ΅ΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅. Π ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΌ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΡΠΈΠ»ΡΡΡ. ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΉ ΡΠΈΠ»ΡΡΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π°, Π° ΡΠ°Π±ΡΠΈΡΠ½ΡΠΉ β ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠΈΠ»ΡΡΡΠ°.
ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ c Π²Π½Π΅ΡΠ½ΠΈΠΌΠΈ ΡΠ»ΡΠΆΠ±Π°ΠΌΠΈ. ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΡΠ·ΡΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠΈΠ³ΡΡΠ²Π°ΡΠ΅Π»Ρ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°ΡΡΡΡ Ρ Π²Π½Π΅ΡΠ½ΠΈΠΌΠΈ ΡΠ»ΡΠΆΠ±Π°ΠΌΠΈ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΠΌΠΎΠ³Π»ΠΈ Π²ΡΠ±ΡΠ°ΡΡ ΠΌΡΠ·ΡΠΊΠ°Π»ΡΠ½ΡΠ΅ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΈ. ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΎΠ±ΡΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π»Ρ ΠΌΡΠ·ΡΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ²ΠΈΡΠ° ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°Π±ΡΠΈΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠ΅Π½ΠΈΠΉ.
ΠΡΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠ΅ ΡΠΈΡΡΠ°ΡΠΈΠΈ ΡΡ ΠΎΠΆΠΈ. ΠΠ½ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ ΡΡΠ΅Π΄ΡΡΠ²Π° Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΎΠ΄ΡΠΊΡΠ°, ΠΏΠΎΡΡΠΎΠΌΡ Π²ΠΎ Π²ΡΠ΅Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΠ°Π±ΡΠΈΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄.
Π€Π°Π±ΡΠΈΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ β ΡΡΠΎ ΡΠΈΡΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ ΡΠ°Π±Π»ΠΎΠ½ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΡΠΈΡΡΠ°ΡΠΈΡΡ
Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΠΌΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°.
Π¨Π°Π±Π»ΠΎΠ½ ΡΠ΄Π°Π»ΡΠ΅Ρ ΡΠ»ΠΎΠΆΠ½ΡΠΉ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ ΡΡΡΠ΄Π½ΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ, ΠΈ Π·Π°ΠΌΠ΅Π½ΡΠ΅Ρ Π΅Π³ΠΎ Π½Π° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΈ ΡΠ°ΡΡΠΈΡΡΡΡ. ΠΠ½ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ°Π΅Ρ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π° Π΄Π»Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ Π½ΠΎΠ²ΡΡ
ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ.
ΠΡΠΎ Π²Π°ΠΆΠ½ΠΎ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΏΡΠ°Π²ΠΊΠ° ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π° ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΠΌ Π² ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ ΠΈ Π±Π°Π³Π°ΠΌ.
Π§ΡΠΎ Π΅ΡΠ΅ ΠΏΠΎΡΠΈΡΠ°ΡΡ
Design Patterns: Elements of Reusable Object-Oriented SoftwareΒ β Π½Π°Π±ΠΎΡ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ½Π½ΡΡ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ² ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
Heads First Design Patterns: A Brain-Friendly Guide β ΠΊΠ½ΠΈΠ³Π° ΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏΠ°Ρ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ² ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
ΠΠΎΠ½ΡΠ°Π²ΠΈΠ»ΡΡ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π» ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΡΠ°Π±ΡΠΈΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄? ΠΡΡΠ³ΠΈΠ΅ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Ρ ΠΏΠΎ ΡΠ΅ΠΌΠ΅:
ΠΡΡΠΎΡΠ½ΠΈΠΊ: Π€Π°Π±ΡΠΈΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΠΈ ΠΊΠ°ΠΊ Π΅Π³ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΠΏΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ Π½Π° Python on Real Python
Π Π°Π·Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ ΠΈ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ Π² Python | ΠΠ΅ΡΠΎΠ΄ Python ΠΏΡΠΎΡΠΈΠ² ΡΡΠ½ΠΊΡΠΈΠΈ
1. ΠΠ΅ΡΠΎΠ΄ Python ΠΏΡΠΎΡΠΈΠ² ΡΡΠ½ΠΊΡΠΈΠΈ — ΡΠ΅Π»Ρ
ΠΠ° ΠΏΡΡΠΈ ΠΊ Python ΠΌΡ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΠ»ΠΈΡΡ Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ ΠΈ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ Python. ΠΠΎ ΡΠ°Π·Π²Π΅ ΠΎΠ½ΠΈ Π½Π΅ ΡΡΠ²ΡΡΠ²ΡΡΡ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅? Π§ΡΠΎ ΠΆ, ΠΏΠΎΡΠ° ΠΏΡΠΎΠ²Π΅ΡΡΠΈ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ Python ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈ. ΠΠΎ ΠΏΠ΅ΡΠ΅Π΄ ΡΡΠΈΠΌ Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΠ΅ΡΠ΅ΡΠΌΠΎΡΡΠΈΠΌ ΠΈ ΡΡΠ½ΠΊΡΠΈΡ, ΠΈ ΠΌΠ΅ΡΠΎΠ΄ Π² Python.
ΠΡΠ°ΠΊ, Π΄Π°Π²Π°ΠΉΡΠ΅ Π½Π°ΡΠ½Π΅ΠΌ «Π Π°Π·Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ ΠΈ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ Π² Python».
Π Π°Π·Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ ΠΈ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ Π² Python | ΠΠ΅ΡΠΎΠ΄ Python ΠΏΡΠΎΡΠΈΠ² ΡΡΠ½ΠΊΡΠΈΠΈ
Π Π°Π·Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ ΠΈ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ Π² Python
2. Π€ΡΠ½ΠΊΡΠΈΠΈ Python — ΠΠ΅ΡΡΠΈΡ
Π€ΡΠ½ΠΊΡΠΈΡ Python — ΡΡΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅ Ρ Π·Π°Π΄Π°Π½Π½ΡΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ. ΠΠ½ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ΄Π°. ΠΠΎΠ³Π΄Π° ΠΌΡ Π³ΠΎΠ²ΠΎΡΠΈΠ»ΠΈ ΠΎ ΡΡΠ½ΠΊΡΠΈΡΡ Python, ΠΌΡ Π³ΠΎΠ²ΠΎΡΠΈΠ»ΠΈ ΠΎ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡΡ .
Π°. ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ
ΠΠ°ΠΊ ΠΈ Π»ΡΠ±ΠΎΠΉ Π΄ΡΡΠ³ΠΎΠΉ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Python ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°ΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ Π½Π°ΡΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ.ΠΠΎΠ·ΡΠΌΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅Ρ.
>>> def add (a, b): Π²Π΅ΡΠ½ΡΡΡ a + b >>> Π΄ΠΎΠ±Π°Π²ΠΈΡΡ (3, -3)
0
ΠΡ Π½Π°Π·ΡΠ²Π°Π΅ΠΌ ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ Β«Π΄ΠΎΠ±Π°Π²ΠΈΡΡΒ». ΠΠ°ΠΊ ΠΈ ΠΎΠΆΠΈΠ΄Π°Π»ΠΎΡΡ, ΠΎΠ½ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ Π΄Π²Π° Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ². ΠΠΎΠ³Π΄Π° ΠΌΡ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ Π΅Π³ΠΎ ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ -3 ΠΈ 3, ΠΎΠ½ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ 0. ΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΡΠ΅, ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ return Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ· ΡΡΠ½ΠΊΡΠΈΠΈ Python.
ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΊΠΎΡΠΎΡΠ°Ρ, Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°ΠΌ Π»Π΅Π³ΠΊΠΎ Π²Π½ΠΎΡΠΈΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ Π·Π°Ρ ΠΎΡΠΈΠΌ.
Π§ΡΠΎΠ±Ρ ΡΠ·Π½Π°ΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΎ ΡΡΠ½ΠΊΡΠΈΡΡ , ΡΡΡΠΎΠΊΠ°Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, ΠΎΠ±Π»Π°ΡΡΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΆΠΈΠ·Π½ΠΈ, ΠΏΡΠΎΡΡΠΈΡΠ΅ ΡΡΠ°ΡΡΡ Π€ΡΠ½ΠΊΡΠΈΠΈ Python .
Π³. ΠΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ
Π Π½Π°ΡΠ΅ΠΉ ΡΠ΅ΡΠ΅Π½Π·ΠΈΠΈ Π½Π° Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ Python ΠΌΡ ΠΊΡΠ°ΡΠΊΠΎ ΠΎΠ±ΡΡΠ΄ΠΈΠ»ΠΈ ΠΎΠΊΠΎΠ»ΠΎ 66 ΡΡΠ½ΠΊΡΠΈΠΉ. ΠΡΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π½Π°ΠΌ Python, ΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· Π½ΠΈΡ ΠΌΡ ΡΠ°ΡΡΠΎ Π²ΠΈΠ΄ΠΈΠΌ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ. ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· Π½ΠΈΡ .
>>> def demofunc (a, b): "" " // ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π° Π΄Π»Ρ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ Π² Python "" " print ("ΠΠ°ΡΠ°ΡΡ") ΠΏΠ΅ΡΠ°ΡΡ (ΠΌΠ°ΠΊΡ (Π°, Π±)) ΠΏΠ΅ΡΠ°ΡΡ (Π°Π±Ρ (Π°), Π°Π±Ρ (Π±)) print (float (a), b) ΠΏΠ΅ΡΠ°ΡΡ (Π²ΡΠ·ΡΠ²Π°Π΅ΠΌΡΠΉ (Π°)) ΠΏΠ΅ΡΠ°ΡΡ (Ρ Π΅Ρ (Π°), Ρ Π΅Ρ (Π±)) ΠΏΠ΅ΡΠ°ΡΡ (len ('ab')) ΠΏΠ΅ΡΠ°ΡΡ (ΡΠΈΠΏ (Π°)) Π΄Π»Ρ Ρ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ (2,4): print (i) >>> demofunc (2,3)
ΠΠ°ΡΠ°Π»ΠΎ
3
2 3
2.0 3
ΠΠΎΠΆΡ
2 3
2
<ΠΊΠ»Π°ΡΡ Β«intΒ»>
2
3
>>> c = lambda: print ("ΠΡΠΈΠ²Π΅Ρ") >>> ΡΠΈΠΏ (c)
Π‘ΠΌ. Π’Π°ΠΊΠΆΠ΅ ython Lambda Expressions .
3. ΠΠ΅ΡΠΎΠ΄Ρ Python — ΠΠ΅ΡΡΠΈΡ
ΠΠ΅ΡΠΎΠ΄
Python ΠΏΠΎΡ ΠΎΠΆ Π½Π° ΡΡΠ½ΠΊΡΠΈΡ, Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΎΠ½ ΠΏΡΠΈΠΊΡΠ΅ΠΏΠ»Π΅Π½ ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΡ . ΠΡ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΠΈ ΠΎΠ½, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Π½ΠΎΡΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΡΡΠΎΡ ΠΎΠ±ΡΠ΅ΠΊΡ.Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΌΠ΅ΡΠΎΠ΄ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ ΠΊ ΠΊΠ»Π°ΡΡΡ . ΠΠΎΠ·ΡΠΌΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅Ρ.
>>> ΠΊΠ»Π°ΡΡ Π°Π²ΡΠΎΠΌΠΎΠ±ΠΈΠ»Ρ: def __init __ (Ρ, ΡΠ²Π΅Ρ): self.color = ΡΠ²Π΅Ρ def start (self): print ("ΠΠ°ΠΏΡΡΠΊ Π΄Π²ΠΈΠ³Π°ΡΠ΅Π»Ρ") def showcolor (ΡΠ°ΠΌ): print (f "Π― {self.color}") >>> car = vehicle ('ΡΠ΅ΡΠ½ΡΠΉ') >>> car.start ()
ΠΡΡΠΊ Π΄Π²ΠΈΠ³Π°ΡΠ΅Π»Ρ
>>> car.showcolor ()
Π― ΡΠ΅ΡΠ½ΡΠΉ
Π‘Π½Π°ΡΠ°Π»Π° ΠΌΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠ»ΠΈ ΠΊΠ»Π°ΡΡ Β«ΡΡΠ°Π½ΡΠΏΠΎΡΡΠ½ΠΎΠ΅ ΡΡΠ΅Π΄ΡΡΠ²ΠΎΒ». ΠΠ°ΡΠ΅ΠΌ ΠΌΡ ΡΠΎΠ·Π΄Π°Π»ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡ Β«Π°Π²ΡΠΎΠΌΠΎΠ±ΠΈΠ»ΡΒ» ΠΈΠ· ΡΡΠΎΠ³ΠΎ ΡΠ΅ΡΡΠ΅ΠΆΠ°.ΠΠ΄Π΅ΡΡ __init __ () — ΡΡΠΎ ΠΌΠ°Π³ΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄ , ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ»ΡΠΆΠΈΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠΎΠΌ Π΄Π»Ρ ΠΊΠ»Π°ΡΡΠ°. ΠΠ΅ΡΠΎΠ΄Ρ start () ΠΈ showcolor () ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π΄Π΅Π»Π°ΡΡ ΡΠΎ, ΡΡΠΎ ΠΌΡ Ρ
ΠΎΡΠΈΠΌ. ΠΠΎΠΌΠ½ΠΈΡΠ΅, ΡΡΠΎ ΠΌΠ΅ΡΠΎΠ΄ Python Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Β«selfΒ», ΡΡΠΎΠ±Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡΡ ΠΈΠΌ ΡΡΡΠ»Π°ΡΡΡΡ Π½Π° ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ.
4. Π‘ΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π² Python
Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΠΏΠ΅ΡΠ΅ΡΠΌΠΎΡΡΠ΅Π»ΠΈ ΠΌΠ΅ΡΠΎΠ΄ ΠΈ ΡΡΠ½ΠΊΡΠΈΡ Python, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΡΠ°Π²Π½ΠΈΡΡ ΠΈΡ . ΠΠ΅ΡΠ΅ΡΠΈΡΠ»ΠΈΠΌ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠΈΡ.
- ΠΠ΅ΡΠΎΠ΄ Python Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ Π΄Π»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΈ.Π Π½Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π²ΡΡΠ΅ ΠΌΡ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ start () Π΄Π»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ° car. Π Π½Π°ΠΎΠ±ΠΎΡΠΎΡ, ΠΌΡ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ Python Π² ΠΎΠ±ΡΠ΅ΠΌ Π²ΠΈΠ΄Π΅ — ΠΌΡ Π½Π΅ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ Π΅Π΅ Π½ΠΈ Π΄Π»Ρ ΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΌΡ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ Π΄Π°Π½Π½ΡΠΌ Π²Π½ΡΡΡΠΈ Π½Π΅Π³ΠΎ.
- ΠΠ΅ΡΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, Π½ΠΎ ΡΡΠ½ΠΊΡΠΈΡ Python ΠΎΠ±ΡΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Ρ Π½ΠΈΠΌ, Π° Π·Π°ΡΠ΅ΠΌ ΡΡΠΎ-ΡΠΎ ΠΏΠ΅ΡΠ°ΡΠ°Π΅Ρ ΠΈΠ»ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅.
ΠΡΠ°ΠΊ, ΡΡΠΎ Π²ΡΠ΅ ΠΎ ΡΠ°Π·Π»ΠΈΡΠΈΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ ΠΈ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ Π² Python. ΠΠ°Π΄Π΅ΡΡΡ, Π²Π°ΠΌ ΠΏΠΎΠ½ΡΠ°Π²ΠΈΡΡΡ Π½Π°ΡΠ΅ ΠΎΠ±ΡΡΡΠ½Π΅Π½ΠΈΠ΅
5.ΠΡΠ²ΠΎΠ΄
ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΡ ΠΌΡ ΠΏΡΠΈΡΠ»ΠΈ ΠΊ Π²ΡΠ²ΠΎΠ΄Ρ, ΡΡΠΎ Π² Python Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈ Π΅ΡΡΡ ΡΠΎΠ½ΠΊΠ°Ρ Π³ΡΠ°Π½Ρ ΠΌΠ΅ΠΆΠ΄Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ ΠΈ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΌΡ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄ Python Π΄Π»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, Π½ΠΎ Ρ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ Π²ΡΠ΅ ΠΈΠ½Π°ΡΠ΅. Π’Π°ΠΊΠΆΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΌΠΎΠ³ΡΡ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ; Π€ΡΠ½ΠΊΡΠΈΠΈ Python ΡΡΠΎΠ³ΠΎ Π½Π΅ Π΄Π΅Π»Π°ΡΡ.
Π‘ΠΌ. Π’Π°ΠΊΠΆΠ΅ — Python Closure ΠΈ Python Range Function
ΠΠ»Ρ ΡΠΏΡΠ°Π²ΠΊΠΈ
.
3. ΠΠΎΠ΄Π΅Π»Ρ Π΄Π°Π½Π½ΡΡ — Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Python 3.8.6
3.1. ΠΠ±ΡΠ΅ΠΊΡΡ, Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈ ΡΠΈΠΏΡ
ΠΠ±ΡΠ΅ΠΊΡΡ — ΡΡΠΎ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΡ Π΄Π°Π½Π½ΡΡ
Python. ΠΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Python
ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ ΠΈΠ»ΠΈ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ. (Π Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠΌΡΡΠ»Π΅ ΠΈ Π²
ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΡΠΎΠ½ ΠΠ΅ΠΉΠΌΠ°Π½Π° Β«ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ Ρ Ρ
ΡΠ°Π½ΠΈΠΌΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΎΠΉΒ», ΠΊΠΎΠ΄ ΡΠ°ΠΊΠΆΠ΅
ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ.)
Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π΅ΡΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ, ΡΠΈΠΏ ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΠΎΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π½ΠΈΠΊΠΎΠ³Π΄Π°
ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ; Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΡΠΌΠ°ΡΡ ΠΎΠ± ΡΡΠΎΠΌ ΠΊΠ°ΠΊ ΠΎΠ± Π°Π΄ΡΠ΅ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π²
ΠΎΠ±ΡΠ΅ΠΌ ΠΏΠ°ΠΌΡΡΠΈ.ΠΠΏΠ΅ΡΠ°ΡΠΎΡ Β« is
Β» ΡΡΠ°Π²Π½ΠΈΠ²Π°Π΅Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΠΎΡΡΡ Π΄Π²ΡΡ
ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ²; ΡΠΎ
id () Π€ΡΠ½ΠΊΡΠΈΡ
Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠ΅Π΅ Π΅Π³ΠΎ Π»ΠΈΡΠ½ΠΎΡΡΡ.
ΠΠ΅ΡΠ°Π»ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ CPython: ΠΠ»Ρ CPython id (x)
— ΡΡΠΎ Π°Π΄ΡΠ΅Ρ ΠΏΠ°ΠΌΡΡΠΈ, Π³Π΄Π΅ Ρ
ΡΠ°Π½ΠΈΡΡΡ x
.
Π’ΠΈΠΏ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Β«Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ
ΠΈΠΌΠ΅Π΅Ρ Π΄Π»ΠΈΠ½Ρ? Β»), Π° ΡΠ°ΠΊΠΆΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΡΡΠΎΠ³ΠΎ
ΡΠΈΠΏ. Π€ΡΠ½ΠΊΡΠΈΡ type ()
Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΈΠΏ ΠΎΠ±ΡΠ΅ΠΊΡΠ° (ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ
ΡΠ°ΠΌ).ΠΠ°ΠΊ ΠΈ Π΅Π³ΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΠΎΡΡΡ, ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΈΠΏΠ° ΡΠ°ΠΊΠΆΠ΅ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π΅Π½.
ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ
ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡΡΡ. ΠΠ±ΡΠ΅ΠΊΡΡ, ΡΠ΅Π½Π½ΠΎΡΡΡ ΠΊΠΎΡΠΎΡΡΡ
ΠΌΠΎΠΆΠ΅Ρ
ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΡΠΈΡΠ°Π΅ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½ΡΠΈΠ²ΡΠΌ ; ΠΎΠ±ΡΠ΅ΠΊΡΡ, ΡΠ΅Π½Π½ΠΎΡΡΡ ΠΊΠΎΡΠΎΡΡΡ
Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½Π° ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ
ΡΠΎΠ·Π΄Π°ΡΡΡΡ, Π½Π°Π·ΡΠ²Π°ΡΡΡΡ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΌΠΈ . (ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°
ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΡΡΡΠ»ΠΊΡ Π½Π° ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡΡΡ, ΠΊΠΎΠ³Π΄Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ
ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ; ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ ΡΡΠΈΡΠ°Π΅ΡΡΡ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΡΠΌ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ
Π½Π°Π±ΠΎΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΡ
ΡΡ Π² Π½Π΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½.ΠΡΠ°ΠΊ, Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΠΎΡΡΡ Π½Π΅
ΡΡΡΠΎΠ³ΠΎ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅, ΡΡΠΎ ΠΈΠΌΠ΅ΡΡ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΡΡΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΠΎΠ½ΠΊΠΎ.)
ΠΈΠ·ΠΌΠ΅Π½ΡΠΈΠ²ΠΎΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ Π΅Π³ΠΎ ΡΠΈΠΏΠΎΠΌ; Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΈΡΠ»Π°, ΡΡΡΠΎΠΊΠΈ
ΠΈ ΠΊΠΎΡΡΠ΅ΠΆΠΈ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡ, Π° ΡΠ»ΠΎΠ²Π°ΡΠΈ ΠΈ ΡΠΏΠΈΡΠΊΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΠΈΠ²Ρ.
ΠΠ±ΡΠ΅ΠΊΡΡ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡΠ½ΠΈΡΡΠΎΠΆΠ°ΡΡΡΡ ΡΠ²Π½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ; ΠΎΠ΄Π½Π°ΠΊΠΎ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ ΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½ΡΠΌΠΈ
ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠΎΠ±ΡΠ°Π½Ρ ΠΌΡΡΠΎΡΠΎΠΌ. Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΎ ΠΎΡΠΊΠ»Π°Π΄ΡΠ²Π°ΡΡ ΠΌΡΡΠΎΡ
ΡΠΎΠ±ΠΈΡΠ°ΡΡ ΠΈΠ»ΠΈ ΠΎΠΏΡΡΠΊΠ°ΡΡ Π²ΠΎΠ²ΡΠ΅ — ΡΡΠΎ Π²ΠΎΠΏΡΠΎΡ ΠΊΠ°ΡΠ΅ΡΡΠ²Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ
ΠΊΠ°ΠΊ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΡΠ±ΠΎΡΠΊΠ° ΠΌΡΡΠΎΡΠ°, Π΅ΡΠ»ΠΈ Π½Π΅ ΡΠΎΠ±ΠΈΡΠ°ΡΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ,
Π²ΡΠ΅ Π΅ΡΠ΅ Π΄ΠΎΡΡΡΠΏΠ½Ρ.
ΠΠ΅ΡΠ°Π»ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ CPython : Π² Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ CPython ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΡ
Π΅ΠΌΡ ΠΏΠΎΠ΄ΡΡΠ΅ΡΠ° ΡΡΡΠ»ΠΎΠΊ Ρ (Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ) Π·Π°Π΄Π΅ΡΠΆΠΊΠΎΠΉ.
ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΠ΅ ΡΠΈΠΊΠ»ΠΈΡΠ΅ΡΠΊΠΈ ΡΠ²ΡΠ·Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΡΡΠΎΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ±ΠΈΡΠ°Π΅Ρ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΠΊΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ
ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½ΡΠΌΠΈ, Π½ΠΎ ΡΠ±ΠΎΡ ΠΌΡΡΠΎΡΠ° Π½Π΅ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅ΡΡΡ
ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠ΅ ΡΠΈΠΊΠ»ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΡΡΠ»ΠΊΠΈ. Π‘ΠΌ. ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π½Π° gc
ΠΌΠΎΠ΄ΡΠ»Ρ Π΄Π»Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΏΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ±ΠΎΡΠΊΠΎΠΉ ΡΠΈΠΊΠ»ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΌΡΡΠΎΡΠ°.
ΠΡΡΠ³ΠΈΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π΄Π΅ΠΉΡΡΠ²ΡΡΡ ΠΈΠ½Π°ΡΠ΅, ΠΈ CPython ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡΡΡ.
ΠΠ΅ ΠΏΠΎΠ»Π°Π³Π°ΠΉΡΠ΅ΡΡ Π½Π° Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΡΡ Π΄ΠΎΡΠ°Π±ΠΎΡΠΊΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ ΡΡΠ°Π½ΡΡ
Π½Π΅Π΄ΠΎΡΡΡΠΏΠ΅Π½ (ΠΏΠΎΡΡΠΎΠΌΡ Π²Ρ Π²ΡΠ΅Π³Π΄Π° Π΄ΠΎΠ»ΠΆΠ½Ρ Π·Π°ΠΊΡΡΠ²Π°ΡΡ ΡΠ°ΠΉΠ»Ρ ΡΠ²Π½ΠΎ).
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ΅Π΄ΡΡΠ² ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΠΈ ΠΈΠ»ΠΈ ΠΎΡΠ»Π°Π΄ΠΊΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ
ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Π² ΠΆΠΈΠ²ΡΡ
ΠΎΠ±ΡΠ΅ΠΊΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ±ΡΡΠ½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π±Ρ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°ΡΡ. Π’Π°ΠΊΠΆΠ΅ ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π»ΠΎΠ²Π»Ρ
ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠΌ Β« ΠΏΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅
β¦ ΠΊΡΠΎΠΌΠ΅
Β» ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΡ
ΡΠ°Π½ΠΈΡΡ
ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΆΠΈΠ²ΡΠ΅.
ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΡΡΡΠ»ΠΊΠΈ Π½Π° Β«Π²Π½Π΅ΡΠ½ΠΈΠ΅Β» ΡΠ΅ΡΡΡΡΡ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΎΡΠΊΡΡΡΡΠ΅ ΡΠ°ΠΉΠ»Ρ ΠΈΠ»ΠΈ
ΠΎΠΊΠ½Π°. ΠΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅ΡΡΡ, ΡΡΠΎ ΡΡΠΈ ΡΠ΅ΡΡΡΡΡ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°ΡΡΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ±ΡΠ΅ΠΊΡ
ΡΠ±ΠΎΡΡΠΈΠΊΠΎΠΌ ΠΌΡΡΠΎΡΠ°, Π½ΠΎ ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠ±ΠΎΡΠΊΠ° ΠΌΡΡΠΎΡΠ° Π½Π΅ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅ΡΡΡ,
ΡΠ°ΠΊΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ ΡΠ²Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡΡ Π²Π½Π΅ΡΠ½ΠΈΠΉ ΡΠ΅ΡΡΡΡ,
ΠΎΠ±ΡΡΠ½ΠΎ ΠΌΠ΅ΡΠΎΠ΄ close ()
.ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°ΠΌ Π½Π°ΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΡΠ²Π½ΠΎ
Π·Π°ΠΊΡΡΡΡ ΡΠ°ΠΊΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ. ΠΠ°ΡΠ²Π»Π΅Π½ΠΈΠ΅ Β« ΠΏΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅
β¦ , Π½Π°ΠΊΠΎΠ½Π΅Ρ,
Β»
ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ Β« Ρ
Β» ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ ΡΠ΄ΠΎΠ±Π½ΡΠ΅ ΡΠΏΠΎΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ.
ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΡΡΡΠ»ΠΊΠΈ Π½Π° Π΄ΡΡΠ³ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ; ΠΎΠ½ΠΈ Π½Π°Π·ΡΠ²Π°ΡΡΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°ΠΌΠΈ .
ΠΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² ΡΠ²Π»ΡΡΡΡΡ ΠΊΠΎΡΡΠ΅ΠΆΠΈ, ΡΠΏΠΈΡΠΊΠΈ ΠΈ ΡΠ»ΠΎΠ²Π°ΡΠΈ. Π‘ΡΡΠ»ΠΊΠΈ
ΡΠ°ΡΡΡ ΡΡΠΎΠΈΠΌΠΎΡΡΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°. Π Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ»ΡΡΠ°Π΅Π², ΠΊΠΎΠ³Π΄Π° ΠΌΡ Π³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΎ ΡΡΠΎΠΈΠΌΠΎΡΡΠΈ
ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ, ΠΌΡ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, Π° Π½Π΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΠΎΡΡΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΡ
ΡΡ Π² Π½Π΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ²;
ΠΎΠ΄Π½Π°ΠΊΠΎ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ Π³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΎΠ± ΠΈΠ·ΠΌΠ΅Π½ΡΠΈΠ²ΠΎΡΡΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°, ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎΠΆΠ΄Π΅ΡΡΠ²Π°
ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°ΡΡΡΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠ΅ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ.ΠΡΠ°ΠΊ, Π΅ΡΠ»ΠΈ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ
(ΠΊΠ°ΠΊ ΠΊΠΎΡΡΠ΅ΠΆ) ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΡΡΠ»ΠΊΡ Π½Π° ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ, Π΅Π³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΡΡΡ, Π΅ΡΠ»ΠΈ
ΡΡΠΎΡ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½.
Π’ΠΈΠΏΡ Π²Π»ΠΈΡΡΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π° Π²ΡΠ΅ Π°ΡΠΏΠ΅ΠΊΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°. ΠΠ°ΠΆΠ΅ Π²Π°ΠΆΠ½ΠΎΡΡΡ
Π Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠΌΡΡΠ»Π΅ Π·Π°ΡΡΠ°Π³ΠΈΠ²Π°Π΅ΡΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΠΎΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°: Π΄Π»Ρ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΡ
ΡΠΈΠΏΠΎΠ² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ,
Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΡΡ
Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π²Π΅ΡΠ½ΡΡΡ ΡΡΡΠ»ΠΊΡ Π½Π° Π»ΡΠ±ΠΎΠΉ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Ρ
ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΡΠΈΠΏ ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, Π° Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΡ
ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΡΡΠΎ Π½Π΅ Π΄ΠΎΠΏΡΡΠΊΠ°Π΅ΡΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ.,
ΠΏΠΎΡΠ»Π΅ a = 1; b = 1
, a
ΠΈ b
ΠΌΠΎΠ³ΡΡ ΠΈΠ»ΠΈ Π½Π΅ ΠΌΠΎΠ³ΡΡ ΠΎΡΠ½ΠΎΡΠΈΡΡΡΡ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡ ΠΈ ΡΠΎΠΌΡ ΠΆΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ
ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΎΠ΄ΠΈΠ½, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ, Π½ΠΎ ΠΏΠΎΡΠ»Π΅ c = []; d =
,
[] c
ΠΈ d
Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎ ΠΎΡΠ½ΠΎΡΡΡΡΡ ΠΊ Π΄Π²ΡΠΌ ΡΠ°Π·Π½ΡΠΌ, ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΌ, Π½ΠΎΠ²ΡΠΌ
ΡΠΎΠ·Π΄Π°Π» ΠΏΡΡΡΡΠ΅ ΡΠΏΠΈΡΠΊΠΈ.(ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ c = d = []
Π½Π°Π·Π½Π°ΡΠ°Π΅Ρ ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΎΠ±ΠΎΠΈΠΌ
c
ΠΈ d
.)
3.2. Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½Π°Ρ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΡ ΡΠΈΠΏΠΎΠ²
ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ ΡΠΏΠΈΡΠΎΠΊ ΡΠΈΠΏΠΎΠ², Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ
Π² Python. ΠΠΎΠ΄ΡΠ»ΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ
(Π½Π°ΠΏΠΈΡΠ°Π½ΠΎ Π½Π° C, Java ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΈΡ
ΡΠ·ΡΠΊΠ°Ρ
, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ) ΠΌΠΎΠΆΠ΅Ρ
ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠΈΠΏΡ. Π Π±ΡΠ΄ΡΡΠΈΡ
Π²Π΅ΡΡΠΈΡΡ
Python ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ ΡΠΈΠΏΡ ΠΊ ΡΠΈΠΏΡ
ΠΈΠ΅ΡΠ°ΡΡ
ΠΈΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°ΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΡΠΈΡΠ»Π°, ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ Ρ
ΡΠ°Π½ΠΈΠΌΡΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ ΡΠ΅Π»ΡΡ
ΡΠΈΡΠ΅Π» ΠΈ Ρ. Π΄.),
Ρ
ΠΎΡΡ ΡΠ°ΠΊΠΈΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ°ΡΡΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡΡΡ ΡΠ΅ΡΠ΅Π· ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ.
ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΡ
Π½ΠΈΠΆΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΉ ΡΠΈΠΏΠΎΠ² ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ Π°Π±Π·Π°Ρ ΡΠΎ ΡΠΏΠΈΡΠΊΠΎΠΌ «ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ
Π°ΡΡΠΈΠ±ΡΡΡ. βΠΡΠΎ Π°ΡΡΠΈΠ±ΡΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΈ
Π½Π΅ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Ρ Π΄Π»Ρ ΠΎΠ±ΡΠ΅Π³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ. ΠΡ
ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡΡΡ Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ.
- ΠΠ΅Ρ
ΠΡΠΎΡ ΡΠΈΠΏ ΠΈΠΌΠ΅Π΅Ρ ΠΎΠ΄Π½ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. ΠΡΠΎ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Ρ ΡΡΠΈΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ. ΠΡΠ°
ΠΠΎΡΡΡΠΏ ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅ΡΠ΅Π· Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠ΅ ΠΈΠΌΡΠΠ΅Ρ
. ΠΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΡ
ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ ΡΠ΅Π½Π½ΠΎΡΡΠΈ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ ΡΠΈΡΡΠ°ΡΠΈΡΡ , Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ.g., Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ ΠΈΠ· ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅
Π½ΠΈΡΠ΅Π³ΠΎ ΡΠ²Π½ΠΎ Π½Π΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ. ΠΠ³ΠΎ ΠΈΡΡΠΈΠ½Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π»ΠΎΠΆΠ½ΠΎ.- NotImplemented
ΠΡΠΎΡ ΡΠΈΠΏ ΠΈΠΌΠ΅Π΅Ρ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. ΠΡΠΎ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Ρ ΡΡΠΈΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ. ΠΡΠ°
ΠΠΎΡΡΡΠΏ ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅ΡΠ΅Π· Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠ΅ ΠΈΠΌΡNotImplemented
. Π§ΠΈΡΠ»ΠΎΠ²ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ
ΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ Π½Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡ
ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π΄Π»Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΡΡ ΠΎΠΏΠ΅ΡΠ°Π½Π΄ΠΎΠ². (ΠΠ°ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΡΠΈΠΊ ΠΏΠΎΠΏΡΠΎΠ±ΡΠ΅Ρ
ΠΎΡΡΠ°ΠΆΠ΅Π½Π½Π°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ Π΄ΡΡΠ³ΠΎΠΉ ΠΎΡΠΊΠ°Ρ, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°.)
.
ΡΡΡΠΎΠΊΠΎΠ²ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Python | Programiz
Python Π‘ΡΡΠΎΠΊΠ° capitalize ()
ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠΈΠΌΠ²ΠΎΠ» Π² Π·Π°Π³Π»Π°Π²Π½ΡΡ Π±ΡΠΊΠ²Ρ
Python String casefold ()
ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ ΡΡΡΡΠ½Ρ Π² ΡΡΡΠ»ΡΡ
Python Π¦Π΅Π½ΡΡ ΡΡΡΡΠ½ ()
ΠΠΎΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΡΡΠΎΠΊΡ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΌ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠΌ
Python ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΡΡΠΎΠΊ ()
Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π²Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΠΏΠΎΠ΄ΡΡΡΠΎΠΊΠΈ Π² ΡΡΡΠΎΠΊΠ΅
ΠΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ° ΡΡΡΠΎΠΊΠΈ Python ()
Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π·Π°ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΡΡΠΎΠΊΡ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ
Python Π‘ΡΡΠΎΠΊΠ° Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°Π΅ΡΡΡ Π½Π° ()
ΠΡΠΎΠ²Π΅ΡΡΠ΅Ρ, Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°Π΅ΡΡΡ Π»ΠΈ ΡΡΡΠΎΠΊΠ° ΡΠΊΠ°Π·Π°Π½Π½ΡΠΌ ΡΡΡΡΠΈΠΊΡΠΎΠΌ
Python String expandtabs ()
ΠΠ°ΠΌΠ΅Π½ΡΠ΅Ρ ΡΠΈΠΌΠ²ΠΎΠ» ΡΠ°Π±ΡΠ»ΡΡΠΈΠΈ ΠΏΡΠΎΠ±Π΅Π»Π°ΠΌΠΈ
Python String find ()
ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΈΠ½Π΄Π΅ΠΊΡ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π²Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΠΏΠΎΠ΄ΡΡΡΠΎΠΊΠΈ
Python Π€ΠΎΡΠΌΠ°Ρ ΡΡΡΠΎΠΊΠΈ ()
ΡΠΎΡΠΌΠ°ΡΠΈΡΡΠ΅Ρ ΡΡΡΠΎΠΊΡ Π² Π±ΠΎΠ»Π΅Π΅ ΡΠ΄ΠΎΠ±Π½ΡΠΉ Π²ΡΠ²ΠΎΠ΄
Python String format_map ()
Π€ΠΎΡΠΌΠ°ΡΠΈΡΡΠ΅Ρ ΡΡΡΠΎΠΊΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ»ΠΎΠ²Π°ΡΡ
Python ΠΠ½Π΄Π΅ΠΊΡ ΡΡΡΠΎΠΊΠΈ ()
ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΈΠ½Π΄Π΅ΠΊΡ ΠΏΠΎΠ΄ΡΡΡΠΎΠΊΠΈ
Python Π‘ΡΡΠΎΠΊΠ° isalnum ()
ΠΡΠΎΠ²Π΅ΡΡΠ΅Ρ Π±ΡΠΊΠ²Π΅Π½Π½ΠΎ-ΡΠΈΡΡΠΎΠ²ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ
Π‘ΡΡΠΎΠΊΠ° Python isalpha ()
ΠΡΠΎΠ²Π΅ΡΡΠ΅Ρ, Π²ΡΠ΅ Π»ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΡΠ²Π»ΡΡΡΡΡ Π°Π»ΡΠ°Π²ΠΈΡΠ°ΠΌΠΈ
Python Π‘ΡΡΠΎΠΊΠ° isdecimal ()
ΠΡΠΎΠ²Π΅ΡΡΠ΅Ρ Π΄Π΅ΡΡΡΠΈΡΠ½ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ
Π‘ΡΡΠΎΠΊΠ° Python isdigit ()
ΠΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΡΠ΅ ΡΠΈΡΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²
Python Π‘ΡΡΠΎΠΊΠ° isidentifier ()
ΠΡΠΎΠ²Π΅ΡΡΠ΅Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ
Python Π‘ΡΡΠΎΠΊΠ° islower ()
ΠΡΠΎΠ²Π΅ΡΡΠ΅Ρ, Π²ΡΠ΅ Π»ΠΈ Π°Π»ΡΠ°Π²ΠΈΡΡ Π² ΡΡΡΠΎΠΊΠ΅ ΡΡΡΠΎΡΠ½ΡΠ΅
Python Π‘ΡΡΠΎΠΊΠ° isnumeric ()
ΠΡΠΎΠ²Π΅ΡΡΠ΅Ρ ΡΠΈΡΠ»ΠΎΠ²ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ
Π‘ΡΡΠΎΠΊΠ° Python isprintable ()
ΠΡΠΎΠ²Π΅ΡΡΠ΅Ρ ΠΏΠ΅ΡΠ°ΡΠ½ΡΠΉ ΡΠΈΠΌΠ²ΠΎΠ»
Π‘ΡΡΠΎΠΊΠ° Python isspace ()
ΠΡΠΎΠ²Π΅ΡΡΠ΅Ρ ΠΏΡΠΎΠ±Π΅Π»ΡΠ½ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ
Python String istitle ()
ΠΡΠΎΠ²Π΅ΡΡΠ΅Ρ ΡΡΡΠΎΠΊΡ Ρ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠΌ
Π‘ΡΡΠΎΠΊΠ° Python isupper ()
Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ, Π΅ΡΠ»ΠΈ Π²ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΡΠ²Π»ΡΡΡΡΡ ΠΏΡΠΎΠΏΠΈΡΠ½ΡΠΌΠΈ
Python String join ()
ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΎΡΡΠ°Π²Π½ΡΡ ΡΡΡΠΎΠΊΡ
Π‘ΡΡΠΎΠΊΠ° Python ljust ()
Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π²ΡΡΠΎΠ²Π½Π΅Π½Π½ΡΡ ΠΏΠΎ Π»Π΅Π²ΠΎΠΌΡ ΠΊΡΠ°Ρ ΡΡΡΠΎΠΊΡ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΡΠΈΡΠΈΠ½Ρ
ΠΠΈΠΆΠ½ΡΡ ΡΡΡΠΎΠΊΠ° Python ()
Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΡΡΠΎΠΊΡ Π² Π½ΠΈΠΆΠ½Π΅ΠΌ ΡΠ΅Π³ΠΈΡΡΡΠ΅
Π‘ΡΡΠΎΠΊΠ° Python lstrip ()
Π£Π΄Π°Π»ΡΠ΅Ρ Π½Π°ΡΠ°Π»ΡΠ½ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ
Python String maketrans ()
Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ°Π±Π»ΠΈΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ
Π Π°Π·Π΄Π΅Π» ΡΡΡΠΎΠΊΠΈ Python ()
Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΊΠΎΡΡΠ΅ΠΆ
Python String replace ()
Π·Π°ΠΌΠ΅Π½ΡΠ΅Ρ ΠΏΠΎΠ΄ΡΡΡΠΎΠΊΡ Π²Π½ΡΡΡΠΈ
Python String rfind ()
ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π½Π°ΠΈΠ²ΡΡΡΠΈΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ ΠΏΠΎΠ΄ΡΡΡΠΎΠΊΠΈ
Python String rindex ()
ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π½Π°ΠΈΠ²ΡΡΡΠΈΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ ΠΏΠΎΠ΄ΡΡΡΠΎΠΊΠΈ
Python Π‘ΡΡΠΎΠΊΠ° rjust ()
Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π²ΡΡΠΎΠ²Π½Π΅Π½Π½ΡΡ ΠΏΠΎ ΠΏΡΠ°Π²ΠΎΠΌΡ ΠΊΡΠ°Ρ ΡΡΡΠΎΠΊΡ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΡΠΈΡΠΈΠ½Ρ
Python String rpartition ()
Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΊΠΎΡΡΠ΅ΠΆ
Python String rsplit ()
Π Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΡΡΠΎΠΊΠΈ ΡΠΏΡΠ°Π²Π°
Python String rstrip ()
Π£Π΄Π°Π»ΡΠ΅Ρ Π·Π°Π²Π΅ΡΡΠ°ΡΡΠΈΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ
Python String split ()
Π Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΡΡΠΎΠΊΠΈ ΡΠ»Π΅Π²Π°
Python String splitlines ()
Π Π°Π·Π±ΠΈΠ²Π°Π΅Ρ ΡΡΡΠΎΠΊΡ Π½Π° Π³ΡΠ°Π½ΠΈΡΠ°Ρ Π»ΠΈΠ½ΠΈΠΈ
Π‘ΡΡΠΎΠΊΠ° Python Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ ()
ΠΡΠΎΠ²Π΅ΡΡΠ΅Ρ, Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Π»ΠΈ ΡΡΡΠΎΠΊΠ° Ρ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ
ΠΠΎΠ»ΠΎΡΠΊΠ° Python String ()
Π£Π΄Π°Π»ΡΠ΅Ρ Π½Π°ΡΠ°Π»ΡΠ½ΡΠ΅ ΠΈ ΠΊΠΎΠ½Π΅ΡΠ½ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ
Python String swapcase ()
Π·Π°ΠΌΠ΅Π½ΠΈΡΡ Π·Π°Π³Π»Π°Π²Π½ΡΠ΅ Π±ΡΠΊΠ²Ρ Π½Π° ΡΡΡΠΎΡΠ½ΡΠ΅; Π½Π°ΠΎΠ±ΠΎΡΠΎΡ
Python String title ()
ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΡΡΠΎΠΊΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° Π² ΡΠ΅Π³ΠΈΡΡΡΠ΅
Python String translate ()
Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½Π½ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΡΡ ΡΡΡΠΎΠΊΡ
Python Π‘ΡΡΠΎΠΊΠ° Π²Π΅ΡΡ Π½ΡΡ ()
Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΡΡΠΎΠΊΡ Π² Π²Π΅ΡΡ Π½Π΅ΠΌ ΡΠ΅Π³ΠΈΡΡΡΠ΅
Python Π‘ΡΡΠΎΠΊΠ° zfill ()
ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΊΠΎΠΏΠΈΡ ΡΡΡΠΎΠΊΠΈ, Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½ΠΎΠΉ Π½ΡΠ»ΡΠΌΠΈ
.
ΠΠ»ΠΎΡΡΠ°ΡΠΈΠΉ — Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Python 3.8.6
>>>
ΠΡΠΈΠ³Π»Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ Python ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. Π§Π°ΡΡΠΎ Π²ΡΡΡΠ΅ΡΠ°Π΅ΡΡΡ Π·Π° ΠΊΠΎΠ΄ΠΎΠΌ
ΠΏΡΠΈΠΌΠ΅ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎ Π² ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ΅.
...
ΠΠΎΠΆΠ½ΠΎ ΡΡΡΠ»Π°ΡΡΡΡ Π½Π°:
ΠΡΠΈΠ³Π»Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ Python ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΏΡΠΈ Π²Π²ΠΎΠ΄Π΅
ΠΊΠΎΠ΄ Π΄Π»Ρ Π±Π»ΠΎΠΊΠ° ΠΊΠΎΠ΄Π° Ρ ΠΎΡΡΡΡΠΏΠΎΠΌ, ΠΊΠΎΠ³Π΄Π° Π² ΠΏΠ°ΡΠ΅ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡΠΈΡ left ΠΈ
ΠΏΡΠ°Π²ΡΠ΅ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»ΠΈ (ΠΊΡΡΠ³Π»ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ, ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ, ΡΠΈΠ³ΡΡΠ½ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ ΠΈΠ»ΠΈ ΡΡΠΎΠΉΠ½ΡΠ΅
ΠΊΠ°Π²ΡΡΠΊΠΈ) ΠΈΠ»ΠΈ ΠΏΠΎΡΠ»Π΅ ΡΠΊΠ°Π·Π°Π½ΠΈΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ°.ΠΡΡΡΠΎΠ΅Π½Π½Π°Ρ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ°
Ellipsis
.
ΠΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΡΠ°Π΅ΡΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ Python 2.x Π² ΠΊΠΎΠ΄ Python 3.x Ρ ΠΏΠΎΠΌΠΎΡΡΡ
ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° Π½Π΅ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠ΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½Ρ ΠΏΡΡΠ΅ΠΌ Π°Π½Π°Π»ΠΈΠ·Π°
source ΠΈ ΠΎΠ±Ρ
ΠΎΠ΄ Π΄Π΅ΡΠ΅Π²Π° ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°.
2to3 Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ ΠΊΠ°ΠΊ lib2to3
; Π°Π²ΡΠΎΠ½ΠΎΠΌΠ½ΡΠΉ
ΡΠΎΡΠΊΠ° Π²Ρ
ΠΎΠ΄Π° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ Tools / scripts / 2to3
. ΠΠΈΠ΄Π΅ΡΡ
2to3 — Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ ΠΊΠΎΠ΄Π° Python 2 Π² 3.
ΠΠ±ΡΡΡΠ°ΠΊΡΠ½ΡΠ΅ Π±Π°Π·ΠΎΠ²ΡΠ΅ ΠΊΠ»Π°ΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΡΡΡ ΡΡΠΈΠ½ΡΡ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ
ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΏΠΎΡΠΎΠ±Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ², ΠΊΠΎΠ³Π΄Π° Π΄ΡΡΠ³ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ
hasattr ()
Π±ΡΠ»ΠΎ Π±Ρ Π½Π΅ΡΠΊΠ»ΡΠΆΠ΅ ΠΈΠ»ΠΈ ΡΠ»Π΅Π³ΠΊΠ° Π½Π΅Π²Π΅ΡΠ½ΠΎ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ
ΠΌΠ°Π³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ). ΠΠ·Π±ΡΠΊΠ° Π²Π²ΠΎΠ΄ΠΈΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠΉ
ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡΡ, ΡΠΎ Π΅ΡΡΡ ΠΊΠ»Π°ΡΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ Π½Π°ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΎΡ ΠΊΠ»Π°ΡΡΠ°, Π½ΠΎ ΡΠ²Π»ΡΡΡΡΡ
Π²ΡΠ΅ Π΅ΡΠ΅ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π΅ΡΡΡ isinstance ()
ΠΈ issubclass ()
; ΡΠ²ΠΈΠ΄Π΅ΡΡ
abc
ΠΌΠΎΠ΄ΡΠ»Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ. Python ΠΈΠΌΠ΅Π΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ
ABC Π΄Π»Ρ
ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ
(Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡΡ
.ΠΌΠΎΠ΄ΡΠ»Ρ abc
), ΡΠΈΡΠ»Π° (Π²
Π½ΠΎΠΌΠ΅ΡΠΎΠ² ΠΌΠΎΠ΄ΡΠ»Ρ
), ΠΏΠΎΡΠΎΠΊΠΈ (Π² ΠΌΠΎΠ΄ΡΠ»Π΅ io
), ΡΡΠ΅Π΄ΡΡΠ²Π° ΠΏΠΎΠΈΡΠΊΠ° ΠΈΠΌΠΏΠΎΡΡΠ°
ΠΈ Π·Π°Π³ΡΡΠ·ΡΠΈΠΊΠΈ (Π² ΠΌΠΎΠ΄ΡΠ»Π΅ importlib.abc
). ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ²ΠΎΠΉ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ
ABC Ρ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΌ abc
.
ΠΠ΅ΡΠΊΠ°, ΡΠ²ΡΠ·Π°Π½Π½Π°Ρ Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΊΠ»Π°ΡΡΠΎΠΌ
Π°ΡΡΠΈΠ±ΡΡ ΠΈΠ»ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ»ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅,
ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΠΎ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΡ ΠΊΠ°ΠΊ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠ° ΡΠΈΠΏΠ°.
ΠΠ½Π½ΠΎΡΠ°ΡΠΈΠΈ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ
ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½Ρ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, Π½ΠΎ
Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΡ
ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
, Π°ΡΡΠΈΠ±ΡΡΠΎΠ² ΠΊΠ»Π°ΡΡΠΎΠ² ΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ
Ρ
ΡΠ°Π½ΡΡΡΡ Π² __ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡΡ
__
ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΉ Π°ΡΡΠΈΠ±ΡΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ, ΠΊΠ»Π°ΡΡΠΎΠ² ΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ,
ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ.
Π‘ΠΌ. ΠΠ½Π½ΠΎΡΠ°ΡΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
, Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ, PEP 484
ΠΈ PEP 526 , ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ.
ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΠΎΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ (ΠΈΠ»ΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ) ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅
ΡΡΠ½ΠΊΡΠΈΡ. ΠΡΡΡ Π΄Π²Π° ΡΠΈΠΏΠ° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ²:
Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π° : Π°ΡΠ³ΡΠΌΠ΅Π½Ρ, ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΠΏΡΠ΅Π΄ΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ,
name =
) Π² Π²ΡΠ·ΠΎΠ²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ ΠΊΠ°ΠΊ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π² ΡΠ»ΠΎΠ²Π°ΡΠ΅
ΠΏΡΠ΅Π΄ΡΠ΅ΡΡΠ²ΡΠ΅Ρ**
.ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ,3
ΠΈ5
ΡΠ²Π»ΡΡΡΡΡ ΠΊΠ»ΡΡΠ΅Π²ΡΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ.
Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ Π² ΡΠ»Π΅Π΄ΡΡΡΠΈΡ Π²ΡΠ·ΠΎΠ²Π°Ρcomplex ()
:ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ (Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ = 3, Π²ΠΎΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΠΌΡΠΉ = 5) ΡΠ»ΠΎΠΆΠ½ΡΠΉ (** {'ΡΠ΅Π°Π»ΡΠ½ΡΠΉ': 3, 'Π²ΠΎΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΠΌΡΠΉ': 5})
ΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½Π½ΡΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ : Π°ΡΠ³ΡΠΌΠ΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π°.
ΠΠΎΠ·ΠΈΡΠΈΠΎΠ½Π½ΡΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΡΠ²Π»ΡΡΡΡΡ Π² Π½Π°ΡΠ°Π»Π΅ ΡΠΏΠΈΡΠΊΠ° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ²
ΠΈ / ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡΡΡ ΠΊΠ°ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ, ΠΏΠ΅ΡΠ΅Π΄ ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΡΠΎΠΈΡ*
.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ,3
ΠΈ5
ΡΠ²Π»ΡΡΡΡΡ ΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½Π½ΡΠΌΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ Π²
ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π·Π²ΠΎΠ½ΠΊΠΈ:ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ (3, 5) ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ (* (3, 5))
ΠΡΠ³ΡΠΌΠ΅Π½ΡΡ Π½Π°Π·Π½Π°ΡΠ°ΡΡΡΡ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠΌ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ Π² ΡΠ΅Π»Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ.Π‘ΠΌ. Π ΡΠ°Π·Π΄Π΅Π»Π΅ Β«ΠΠ²ΠΎΠ½ΠΊΠΈΒ» ΠΏΡΠ°Π²ΠΈΠ»Π°, ΡΠ΅Π³ΡΠ»ΠΈΡΡΡΡΠΈΠ΅ ΡΡΠΎ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅.
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π»ΡΠ±ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°; ΡΠΎ
ΠΎΡΠ΅Π½Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΡΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ.
Π‘ΠΌ. Π’Π°ΠΊΠΆΠ΅ Π·Π°ΠΏΠΈΡΡ Π² Π³Π»ΠΎΡΡΠ°ΡΠΈΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², FAQ ΠΏΠΎ
ΡΠ°Π·Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ, ΠΈ PEP 362 .
ΠΠ±ΡΠ΅ΠΊΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΡΡΠ΅Π΄ΠΎΠΉ, Π²ΠΈΠ΄ΠΈΠΌΠΎΠΉ Π²
async Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠΌ
ΠΏΡΡΠ΅ΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ
.