Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ mro python
ΠΠΎΡΡΠ΄ΠΎΠΊ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄Π° Python (MRO)
Π‘Π΅Π³ΠΎΠ΄Π½Ρ ΠΌΡ ΡΠΎΠ±ΠΈΡΠ°Π΅ΠΌΡΡ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄Π° Python ΠΈΠ»ΠΈ MRO Π΄Π»Ρ ΠΊΡΠ°ΡΠΊΠΎΡΡΠΈ. ΠΡΠ»ΠΈ Π²Ρ ΡΠ»Π΅Π΄ΡΠ΅ΡΠ΅ Π·Π° ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π°ΠΌΠΈ ΠΏΠΎ ΠΊΠ»Π°ΡΡΠ°ΠΌ Python ΠΈ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ, ΠΈ Π²Ρ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΎΠ²Π°Π»ΠΈΡΡ Π² ΠΊΠΎΠ΄Π΅, Π²Ρ ΠΏΠΎΠΉΠΌΠ΅ΡΠ΅, ΡΡΠΎ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΡ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Π΅ΡΡΡ Π² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠΉ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²Π΅ΡΠ½ΡΡΡ ΡΡΡΠ°Π½Π½ΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΈΠ»ΠΈ Π² ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌ ΠΈΡΠΎΠ³Π΅ Ρ Π½Π΅ΠΏΠΎΠ½ΡΡΠ½ΡΠΌΠΈ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌΠΈ. β¦ ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ β¦ ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ β¦ Python Method ΠΏΠΎΡΡΠ΄ΠΎΠΊ (MRO) ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ Β»
ΠΡΠΎΡΠΈΡΠ°ΠΉΡΠ΅ ΡΡΠΈ ΡΡΠ°ΡΡΠΈ, Π΅ΡΠ»ΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ΅Π½ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ° Π½Π° ΠΊΠ»Π°ΡΡΡ Python ΠΈ Π½Π°ΡΠ»Π΅Π΄ΡΡΠ²ΠΎ. ΠΠ΅ ΡΡΠ΅ΡΠ½ΡΠΉΡΠ΅ΡΡ ΡΠ»Π΅Π΄ΠΈΡΡ Π·Π° ΡΡΠΈΠΌ Π²ΠΈΠ΄Π΅ΠΎ, ΠΊΠ°ΠΊ Π²Ρ ΡΠ½ΠΈΠΌΠ°Π΅ΡΠ΅ Π² ΡΡΠ°ΡΡΠ΅:
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Π° Python (MRO)?
ΠΠΎΠ³Π΄Π° ΠΌΡ Π½Π°Π·ΡΠ²Π°Π΅ΠΌ Π°ΡΡΠΈΠ±ΡΡ ΠΈΠ»ΠΈ ΠΌΠ΅ΡΠΎΠ΄ Π² ΠΊΠ»Π°ΡΡΠ΅ Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡΠΌΠΈ, Python ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΌΡ ΠΏΠΎΡΡΠ΄ΠΊΡ ΠΏΡΠΈ ΠΏΠΎΠΈΡΠΊΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ ΠΈΡΠ΅ΠΌ. ΠΡΠΎΡ Π·Π°ΠΊΠ°Π· Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄Π°, ΠΈ ΠΎΠ½ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ Π΄Π²ΡΠΌ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌ:
Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ½ΡΡΡ ΡΡΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π°, Ρ Π½Π°Ρ Π΅ΡΡΡ ΡΡΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ Π΄Π»Ρ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ. __Bases__ Π°ΡΡΠΈΠ±ΡΡ, __mro__ Π°ΡΡΠΈΠ±ΡΡ, Π° Python Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΉ ΡΡΠΏΠ΅Ρ ΠΊΠ»Π°ΡΡ Β«ΠΠ±ΡΠ΅ΠΊΡΒ».
ΠΠ΄Π½Π° Π±ΡΠ΄ΡΡΠ΅ Π·Π΄Π΅ΡΡ, Π΅ΡΡΡ Π΄Π²Π° ΠΌΠ΅ΡΠΎΠ΄Π° MRO Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π²Π΅ΡΡΠΈΠΈ Python, ΠΊΠΎΡΠΎΡΡΡ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅. Π₯ΠΎΡΡ ΡΠ°Π·Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΈΠΌΠΈ Π²ΡΡΠ΄ Π»ΠΈ ΠΏΠΎΡΠ°Π΄ΡΠ΅Ρ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΈΠ· Π½Π°Ρ Π² ΠΏΠΎΠ²ΡΠ΅Π΄Π½Π΅Π²Π½ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ, Ρ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ, ΡΡΠΎ Π΅ΡΠ»ΠΈ Π²Ρ ΠΈΠ·ΡΡΠ°Π΅ΡΠ΅ Python ΡΠ΅Π³ΠΎΠ΄Π½Ρ, Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ Π²Π΅ΡΡΠΈΡ 3.x, ΠΈ ΠΏΠΎ ΡΡΠΎΠΉ ΠΏΡΠΈΡΠΈΠ½Π΅ Ρ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ Ρ Π½ΠΎΠ²ΡΠΌ ΡΡΠΈΠ»Π΅ΠΌ ΠΊΠ»Π°ΡΡΠΎΠ² Π² ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅.
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Π°ΡΡΠΈΠ±ΡΡ __bases__?
__Bases__ ΠΡΡΠΈΠ±ΡΡ β ΡΡΠΎ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΉ ΠΊΠ»Π°ΡΡ Python, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠ²ΠΎΠ΄ΡΡ Π±Π°Π·ΠΎΠ²ΡΠ΅ ΠΊΠ»Π°ΡΡΡ Π»ΡΠ±ΠΎΠ³ΠΎ ΠΠ»Π°ΡΡ ΠΡ Π½Π°Π·ΡΠ²Π°Π΅ΡΠ΅ ΡΡΠΎ.
ΠΠ°Π²Π°ΠΉΡΠ΅ Π½Π°Π·ΠΎΠ²Π΅ΠΌ __Bases__ ΠΡΡΠΈΠ±ΡΡ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠΉ, ΡΡΠΎΠ±Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ Π²ΡΠ²ΠΎΠ΄. ΠΠΎΡ Π±Π»ΠΎΠΊ-ΡΡ Π΅ΠΌΠ° ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΊΠΎΠ΄ Π±ΡΠ΄Π΅Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ. ΠΠ²Π° ΠΊΠ»Π°ΡΡΠ° Π΄Π΅Π΄ΡΡΠ΅ΠΊ, ΠΏΡΠΎΡΠ΅ΠΊΠ°ΡΡΠΈΠ΅ Π² ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΊΠ»Π°ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°ΡΠ΅ΠΌ ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡ Π² Π΄Π΅ΡΡΠΊΠΈΠΉ ΠΊΠ»Π°ΡΡ.
Π ΠΊΠΎΠ΄ Π·Π΄Π΅ΡΡ. Π‘ΠΊΠ»Π°Π΄ΡΠΊΠΈΠ΅ ΠΈ ΡΠΊΠ»Π°Π΄ΡΠΊΠΈΠ΅ ΠΊΠ»Π°ΡΡΡ β Π΄Π΅Π΄ΡΡΠΊΠ°, ΠΊΠ»Π°ΡΡ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΈΠΌ, Π° ΠΏΠ»ΠΎΠ΄Ρ β ΡΡΠΎ ΡΠ΅Π±Π΅Π½ΠΎΠΊ.
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ __Bases__ ΠΠ²ΠΎΠ½ΠΈΡΠ΅ Π½Π° ΡΡΡΠΊΡΠΎΠ²ΡΠ΅ ΡΠΎΡ ΠΏΡΠΎΠ΄ΡΠΊΡΡ ΠΊΠ°ΠΊ Π ΠΎΠ΄ΠΈΡΠ΅Π»Ρ ΠΡΠΊΠ°Π· ΠΡΠΈΠ·ΡΠ² __Bases__ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡ ΠΠ»Π°ΡΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΡΠΎΠΊ ΠΈ Π‘ΠΊΠ»Π°Π΄ ΠΊΠ°ΠΊ Π΅Π³ΠΎ Π ΠΎΠ΄ΠΈΡΠ΅Π»Ρ ΠΡΠΊΠ°Π· ΠΠ°ΠΊ ΡΠΊΠ°Π·Π°Π½ΠΎ Π² Π΄Π²ΡΡ ΠΏΡΠ°Π²ΠΈΠ»Π°Ρ ΡΠ°Π½Π΅Π΅, ΡΡΠΎΠΊ ΠΈ Π‘ΠΊΠ»Π°Π΄ Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΠΏΠΎΠΈΡΠΊΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ Python ΠΏΡΠΈ ΠΏΠΎΠΈΡΠΊΠ΅ Π΄Π΅ΡΠ΅Π²Π°.
ΠΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅ΠΌ Π°ΡΡΠΈΠ±ΡΡ __mro__
ΠΡΠΎΡ Π°ΡΡΠΈΠ±ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ Π² Python, ΠΊΠΎΠ³Π΄Π° Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΊΠΎΡΡΠ΅ΠΆ ΠΠ· ΠΊΠ»Π°ΡΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡΡΡ Python ΠΏΡΠΈ ΠΏΠΎΠΈΡΠΊΠ΅ Π±Π°Π·ΠΎΠ²ΡΡ ΠΊΠ»Π°ΡΡΠΎΠ² Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄Π°. ΠΠ°Π²Π°ΠΉΡΠ΅ Π½Π°Π·ΠΎΠ²Π΅ΠΌ __mro__ Π½Π° ΡΡΠΎΠΊ ΠΠ»Π°ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ Π² ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅, ΡΡΠΎΠ±Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ, ΡΡΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ.
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π² ΠΊΠΎΡΡΠ΅ΠΆΠ΅ Π΅ΡΡΡ Π΄Π²Π° ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΠ°. ΠΠ΅ΡΠ²ΡΠΉ β ΡΡΠΎ ΡΡΠΎΠΊ ΠΠ»Π°ΡΡ, ΠΊΠ°ΠΊ Π²Ρ ΠΎΠΆΠΈΠ΄Π°Π΅ΡΠ΅, ΠΊΠ°ΠΊ ΡΡΠΎ Π½ΡΠ½Π΅ΡΠ½ΠΈΠΉ ΠΊΠ»Π°ΡΡ. ΠΠΎ ΡΡΠΎ ΡΠΏΠΎΠΌΠΈΠ½Π°Π΅ΡΡΡ ΠΊΠ»Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°? ΡΡΠΎΠΊ ΠΠ»Π°ΡΡ β ΡΡΠΎ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΊΠ»Π°ΡΡ ΠΈ Ρ Π½Π΅Π³ΠΎ Π½Π΅Ρ ΡΠ²ΠΎΠΈΡ ΡΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΉ, Π½Π΅ ΡΠ°ΠΊ Π»ΠΈ?
Python Base Object Object Class
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ __mro__, ΡΡΠΎΠ±Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄Π°
ΠΡΠ»ΠΈ ΠΌΡ Π²Π΅ΡΠ½Π΅ΠΌΡΡ Π² Π½Π°Ρ ΠΏΠΎΠ»Π½ΡΠΉ ΠΊΠΎΠ΄, ΠΌΡ ΠΏΠΎΠ·Π²ΠΎΠ½ΠΈΠΌ __mro__ ΠΡΡΠΈΠ±ΡΡ Π½Π° Π΄ΠΎΡΠ΅ΡΠ½Π΅ΠΌ ΠΊΠ»Π°ΡΡΠ΅, Π€ΡΡΠΊΡΡ ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠΈΡΠ΅, ΡΡΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½ΠΎ.
ΠΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ ΡΡΡΡΠΊΡΡΡΡ
ΠΠ°ΡΠΈ ΠΏΡΠΈΠΌΠ΅ΡΡ Π΄ΠΎ ΡΠΈΡ ΠΏΠΎΡ Π±ΡΠ»ΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠ½ΡΠΌΠΈ ΠΈ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠΌΠΈ, Π½ΠΎ ΡΡΠΎ, Π΅ΡΠ»ΠΈ Ρ Π½Π°Ρ Π±ΡΠ΄Π΅Ρ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ»ΠΎΠΆΠ½Π°Ρ ΡΡΡΡΠΊΡΡΡΠ°? ΠΠΎΡ Π±Π»ΠΎΠΊ-ΡΡ Π΅ΠΌΠ°, ΡΡΠΎΠ±Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠΌΠΎΡΡ ΠΈΠ»Π»ΡΡΡΡΠΈΡΠΎΠ²Π°ΡΡ, ΠΊΠ°ΠΊ Python ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π·Π° ΠΊΡΠ»ΠΈΡΠ°ΠΌΠΈ.
Π’ΠΎΠ³Π΄Π° Π²ΠΎΡ ΠΊΠΎΠ΄, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΡΠΉ ΡΡΠΎΠΉ Π±Π»ΠΎΠΊ-ΡΡ Π΅ΠΌΠΎΠΉ.
Π’Π°ΠΊ ΡΡΠΎ ΡΡΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ. ΠΠ°ΠΊΠ°Π· ΡΠ»Π΅Π΄ΠΎΠ²Π°Π» Π½Π΅ ΡΠΎ, ΡΡΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠΆΠΈΠ΄Π°ΡΡ. ΠΠΎΠ½Π΅ΡΠ½ΠΎ, Π±ΡΠ»ΠΎ Π±Ρ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΠΈΡΠΊΠ°ΡΡ ΠΎΠ΄Π½Ρ ΡΡΠΊΡ Π°Π»ΠΌΠ°Π·Π°, ΠΈΠ· ΠΊΠΎΠ½ΡΠ΅ΡΠ²ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ, Π½Π° ΡΠΊΠ»Π°Π΄, Π·Π°ΡΠ΅ΠΌ Π½Π° ΡΠΊΠ»Π°Π΄Π΅, ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ Π²Π΅ΡΠ½ΡΡΡΡΡ ΠΊ ΠΏΠΎΠΈΡΠΊΡ ΠΏΡΠ°Π²ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ ΡΠ΅ΡΠ΅Π· ΠΏΠΎΡΡΠ°Π²ΡΠΈΠΊ ΡΠ½ΠΎΠ²Π° Π½Π° ΡΠΊΠ»Π°Π΄Π΅?
ΠΠ΄Π½Π°ΠΊΠΎ Python Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π΄Π²ΡΡΠΌΡΡΠ»Π΅Π½Π½ΠΎΡΡΡΡ, ΠΈ Π΅ΡΠ»ΠΈ Π±Ρ ΠΈΡΠΊΠ°ΡΡ, ΠΊΠ°ΠΊ ΠΎΠΏΠΈΡΠ°Π½ΠΎ, Π²Ρ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π·Π°ΠΊΠ°Π·:
ΠΡΠΎ ΠΏΡΠΎΡΡΠΎ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ Π½Π°ΡΠ»Π΅Π΄ΡΡΠ²ΠΎΠΌ Π²ΠΎΠΏΡΠΎΡΠΎΠ² ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠ°. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Ρ Π²Π°Ρ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΊΠ»Π°ΡΡ Π΄Π΅Π΄ΡΡΠΊΠ°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΡΡΠΎΠΊ ΠΏΠ΅ΡΠ΅Π΄ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΈΠΌ ΠΊΠ»Π°ΡΡΠΎΠΌ, ΡΠ°ΠΊΠΈΠΌ ΠΊΠ°ΠΊ ΠΏΠΎΡΡΠ°Π²ΡΠΈΠΊ. ΠΠ»ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΡΠΏΠ΅Ρ ΠΊΠ»Π°ΡΡΠ°, Π²ΠΏΠ΅ΡΠ΅Π΄ΠΈ Π±Π°Π±ΡΡΠΊΠ° ΠΈ ΡΠΎΠ΄ΠΈΡΠ΅Π»Ρ. ΠΠΎΡ ΠΏΠΎΡΠ΅ΠΌΡ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ:
ΠΡΠΎΡ ΠΌΠ°ΡΡΡΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΡΠ΅ Π΄Π²ΡΠΌ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ Π²Π²Π΅Π»ΠΈ Π² Π½Π°ΡΠ°Π»Π΅ ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠΈ.
ΠΠΎΡΠ΅ΠΌΡ MRO ΠΈΠΌΠ΅Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅?
ΠΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ Π²Π°Ρ ΠΊΠΎΠ΄ Π½Π°ΡΠ½Π΅Ρ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΠΌ, Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΡΡΠΎΠ²Π½ΡΠΌΠΈ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ, Π³ΠΈΠ±ΡΠΈΠ΄Π½ΡΡ ΡΡΡΡΠΊΡΡΡ ΠΈ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΡ ΠΊΠ»Π°ΡΡΠΎΠ², ΠΆΠΈΠ·Π½Ρ Π½Π°ΡΠΈΠ½Π°Π΅Ρ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡΡ Π³ΡΠΎΠΌΠΎΠ·Π΄ΠΊΠΈΠΌ. ΠΡΠ»ΠΈ ΠΊΠ»Π°ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ Π°ΡΡΠΈΠ±ΡΡ ΠΈΠ»ΠΈ ΠΈΠΌΠ΅Π½Π° ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ², Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π½Π΅ΠΏΡΠΈΡΡΠ½ΡΠΉ ΡΡΡΠΏΡΠΈΠ· ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΈΠ»ΠΈ Π°ΡΡΠΈΠ±ΡΡΠ°, ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ° ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅, ΠΊΠΎΠ³Π΄Π° Python Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π·ΡΠ΅ΡΠΈΡΡ Π΄Π²ΡΡΠΌΡΡΠ»Π΅Π½Π½ΠΎΡΡΡ ΠΈΠ»ΠΈ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ.
ΠΠΎΡΠ΅ΠΌΡ? ΠΠΎΡ Π±Π»ΠΎΠΊ-ΡΡ Π΅ΠΌΠ°.
ΠΡ Π·Π½Π°Π΅ΠΌ, ΡΡΠΎ Π±ΠΎΠ»Π΅Π΅ Π²ΡΡΠΎΠΊΠΈΠΉ ΠΊΠ»Π°ΡΡ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠΉΡΠΈ ΠΏΠ΅ΡΠ΅Π΄ Π±ΠΎΠ»Π΅Π΅ Π½ΠΈΠ·ΠΊΠΈΠΌ ΠΊΠ»Π°ΡΡΠΎΠΌ, Π½ΠΎ ΡΡΠΎ ΡΠΎ, ΡΡΠΎ ΠΌΡ ΠΏΡΠΎΡΠΈΠΌ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΡΠΎΠ·Π΄Π°Π»ΠΈ ΠΊΠ»Π°ΡΡ ΠΏΠΎΠ»ΠΊΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΏΠΎΠ»ΠΊΠ° (Π΄ΠΈΡΡΡΠΈΠ±ΡΡΡΠΎΡ, shop_dispatch) ΠΡΠΊΠ°Π· ΠΡΡΡ Π΄Π²Π° ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. ΠΠ΄Π½ΠΈΠΌ ΠΈΠ· Π½ΠΈΡ β ΡΡΠΎ ΠΏΠ΅ΡΠ΅ΠΎΠ΄Π΅ΡΡΡΡ Π² ΡΠΊΠΎΠ±Π½ΡΠ΅ ΠΊΠ»Π°ΡΡΡ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ ΠΠΎΠ»ΠΊΠ° (Shop_Dispatch, ΠΠΈΡΡΡΠΈΠ±ΡΡΡΠΎΡ) ΠΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π·Π΄Π΅ΡΡ. ΠΠΎ Π²Ρ ΠΈΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΠ΅ Π·Π° Π»ΠΎΠ²ΡΡΠΊΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ Ρ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠΈΠΌΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΠΌΠΈ ΠΊΠΎΠ΄Π°, ΠΎΡΡΠ°Π²ΠΈΠ² Π²Π°Ρ Ρ Π³ΡΡΠ·Π½ΡΠΌ ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ.
ΠΡΡΠ³ΠΎΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ ΡΠ΄Π°Π»ΠΈΡΡ ΠΊΠ»Π°ΡΡ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΡΠΎΡΠ° Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠΎΠ΄ΠΈΡΠ΅Π»Ρ ΠΏΠΎΠ»ΠΊΠ° ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π²ΡΠ΅ Π°ΡΡΠΈΠ±ΡΡΡ ΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ Π΄ΠΎΡΡΡΠΏΠ½Ρ ΡΠ΅ΡΠ΅Π· ΠΈΠ΅ΡΠ°ΡΡ ΠΈΡ. Π‘ΠΌ. Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΌΡ ΡΠ½ΡΠ»ΠΈ ΡΡΡΠ»ΠΊΡ Π½Π° ΠΊΠ»Π°ΡΡ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΡΠΎΡΠ° ΠΈΠ· ΠΏΠΎΠ»ΠΊΠ° ΠΊΠ»Π°ΡΡ. Π§ΡΠΎΠ±Ρ Π΄ΠΎΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, ΠΌΡ Π·Π°ΡΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ ΠΌΠ΅ΡΠΎΠ΄ Π² ΠΊΠ»Π°ΡΡΠ΅ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΡΠΎΡΠ°, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΏΠΎΠ»ΠΊΠ° ΠΠ»Π°ΡΡ, Π·Π°ΡΠ΅ΠΌ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ ΠΌΠ΅ΡΠΊΠΈ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°.
Π’ΠΎΠ³Π΄Π°, Π΅ΡΠ»ΠΈ ΠΌΡ ΠΏΠΎΠ·Π²ΠΎΠ½ΠΈΠΌ __mro__ ΠΠ΅ΡΠΎΠ΄ Π½Π° ΠΏΠΎΠ»ΠΊΠ° ΠΠ»Π°ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ Π²ΠΈΠ΄ΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½ΠΎ.
Π₯ΠΎΡΠΎΡΠΈΠΉ, Π°ΠΊΠΊΡΡΠ°ΡΠ½ΡΠΉ ΠΈ ΠΏΠΎΠ½ΡΡΠ½ΡΠΉ ΠΊΠΎΠ΄ Ρ ΡΠ΅ΡΠΊΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠΎΠΌ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄Π°.
Π Π΅Π·ΡΠΌΠ΅
MRO β ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π² Python
ΠΠΎΠ³ΠΎΡΠΈΠΌ ΠΎ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠΈ. ΠΡΠ»ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΊΠ»Π°ΡΡ ΡΠ½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ ΠΎΡ Π΄ΡΡΠ³ΠΎΠ³ΠΎ, ΡΠΎ ΠΎΠ½ ΠΎΡ Π½Π΅Π³ΠΎ ΠΏΠ΅ΡΠ΅Π½ΠΈΠΌΠ°Π΅Ρ ΡΠ΅Π±Π΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΈ Π°ΡΡΠΈΠ±ΡΡΡ ΡΠ²ΠΎΠ΅Π³ΠΎ ΡΠΎΠ΄ΠΈΡΠ΅Π»Ρ. ΠΡ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· Π½ΠΈΡ ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΠ²ΠΎΡ Π½ΠΎΠ²ΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ β Π² ΡΡΠΎΠΌ ΠΈ Π΅ΡΡΡ ΡΠΌΡΡΠ» Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ. ΠΠΎ ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ Π½Π΅ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ»ΠΈ, ΡΠ°ΠΊ ΠΈ ΠΎΡΡΠ°Π½ΡΡΡΡ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΈΠΌΠΈ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΊΠΎΠ³Π΄Π° Π²Ρ Π²ΡΠ·ΡΠ²Π°Π΅ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° ΠΊΠ»Π°ΡΡΠ°, Python Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ, Π΅ΡΡΡ Π»ΠΈ Π² Π½Π΅ΠΌ ΡΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄. ΠΡΠ»ΠΈ Π΅ΡΡΡ β ΠΎΠ½ ΠΈ Π±ΡΠ΄Π΅Ρ Π²ΡΠ·Π²Π°Π½, Π° Π΅ΡΠ»ΠΈ Π΅Π³ΠΎ Π½Π΅Ρ, ΡΠΎ Π΅ΠΌΡ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΊΠ»Π°ΡΡΡ-ΡΠΎΠ΄ΠΈΡΠ΅Π»ΠΈ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°. ΠΠ΄ΡΡΠ³, Ρ Π½ΠΈΡ Π΅ΡΡΡ?
Π ΠΊΠΎΠ΄Π΅ Π²ΡΡΠ΅ ΡΠ΅Π±Π΅Π½ΠΎΠΊ ΠΈΠ³ΡΠ°Π΅Ρ, ΠΈΠ³ΡΠ°ΡΡ β ΡΡΠΎ Π΅ΠΌΡ ΠΏΡΠΈΡΡΡΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄. ΠΠΎ Π·Π°ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ Π΄Π΅Π½ΡΠ³ΠΈ ΠΎΠ½ ΠΏΠΎΠΊΠ° Π½Π΅ ΡΠΌΠ΅Π΅Ρ, Π½ΠΎ Π΅Π³ΠΎ ΡΠΎΠ΄ΠΈΡΠ΅Π»Ρ Π²ΠΏΠΎΠ»Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Ρ ΡΡΠΈΠΌ ΡΠΏΡΠ°Π²ΠΈΡΡΡΡ. ΠΠΎΡΡΠΎΠΌΡ ΠΌΠ΅ΡΠΎΠ΄ earn_money Π±ΡΠ΄Π΅Ρ Π²Π·ΡΡ ΠΎΡ ΡΠΎΠ΄ΠΈΡΠ΅Π»Ρ. ΠΡΠΌΠ°Ρ, ΡΡΡ Π²ΡΠ΅ ΡΡΠ½ΠΎ.
Π‘Π»ΠΎΠΆΠ½Π΅Π΅ ΡΠΈΡΡΠ°ΡΠΈΡ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΈΠ΅ΡΠ°ΡΡ ΠΈΡ ΠΊΠ»Π°ΡΡΠΎΠ² ΡΠ°Π·ΡΠ°ΡΡΠ°Π΅ΡΡΡ. ΠΠ΅ Π±ΡΠ΄Π΅ΠΌ Π·Π°Π±ΡΠ²Π°ΡΡ, ΡΡΠΎ Python ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅, ΡΡΠΎ ΡΠ΄Π΅Π»Π°Π΅Ρ Π³ΡΠ°Ρ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ Π²Π΅ΡΡΠΌΠ° Π·Π°ΠΏΡΡΠ°Π½Π½ΡΠΌ. ΠΠ΅ΡΠΎΠ΄Ρ Ρ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ Π² Π»ΡΠ±ΡΡ ΠΊΠ»Π°ΡΡΠ°Ρ ΠΈΠ· Π²ΡΠ΅ΠΉ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΠΈ. Π Π΅ΡΠ»ΠΈ ΠΎΡΠ²Π΅Ρ Π½Π° Π²ΠΎΠΏΡΠΎΡ Β«Π³Π΄Π΅ ΠΈΡΠΊΠ°ΡΡ?Β» Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΏΡΠΎΡΡ: ΡΠ½Π°ΡΠ°Π»Π° ΠΏΠΎΡΠΌΠΎΡΡΠΈ Π² ΡΠ°ΠΌΠΎΠΌ ΠΊΠ»Π°ΡΡΠ΅, Π° ΠΏΠΎΡΠΎΠΌ Π² Π΅Π³ΠΎ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡ ; ΡΠΎ ΠΎΡΠ²Π΅Ρ Π½Π° Π²ΠΎΠΏΡΠΎΡ Β«Π² ΠΊΠ°ΠΊΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΠΈΡΠΊΠ°ΡΡ?Β» Π½Π΅ ΡΠ°ΠΊΠΎΠΉ ΡΡΠΈΠ²ΠΈΠ°Π»ΡΠ½ΡΠΉ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²Π·Π³Π»ΡΠ½ΠΈΡΠ΅ Π½Π° ΡΠ°ΠΊΡΡ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΡ ΠΊΠ»Π°ΡΡΠΎΠ²:
Β«ΠΡΠΎΡΡΠΎΠΉΒ» ΠΏΡΠΈΠΌΠ΅Ρ
Π‘ΠΌΠΎΠΆΠ΅Ρ ΡΡ ΠΎΠ΄Ρ Π½Π°Π·Π²Π°ΡΡ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΠΏΠΎΠΈΡΠΊΠ° ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π² ΡΡΠΎΠΉ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΠΈ? Π― Π²ΠΎΡ ΠΎΡΠΈΠ±ΡΡ Ρ ΠΏΠ΅ΡΠ²ΠΎΠΉ ΠΏΠΎΠΏΡΡΠΊΠΈ, ΠΈ Π΄Π°ΠΆΠ΅ ΡΠΎ Π²ΡΠΎΡΠΎΠΉ. Π£Π·Π½Π°Π΅ΠΌ ΠΏΡΠ°Π²Π΄Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ mro():
Π§ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΊΠΎΠ΅ ΡΡΠΎΡ MRO?
ΠΠ±Π±ΡΠ΅Π²ΠΈΠ°ΡΡΡΠ° MRO β method resolution order. Π ΠΏΠΎ-ΡΡΡΡΠΊΠΈ ΡΡΠΎ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΡΡΡ ΠΊΠ°ΠΊ Β«ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ²Β». ΠΠΎ! Π’ΠΎΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ ΠΎΡΠ½ΠΎΡΠΈΡΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΊ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌ, Π½ΠΎ ΠΈ ΠΊ ΠΏΡΠΎΡΠΈΠΌ Π°ΡΡΠΈΠ±ΡΡΠ°ΠΌ ΠΊΠ»Π°ΡΡΠ°, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΌΠ΅ΡΠΎΠ΄Ρ β ΡΡΠΎ ΡΠ°ΡΡΠ½ΡΠΉ ΡΠ»ΡΡΠ°ΠΉ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ±ΡΠ΅Π³ΠΎ ΠΏΠΎΠ½ΡΡΠΈΡ Β«Π°ΡΡΠΈΠ±ΡΡΒ».
ΠΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° Z.mro() Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π½Π°ΠΌ ΡΠΏΠΈΡΠΎΠΊ ΠΊΠ»Π°ΡΡΠΎΠ² ΡΠΎΠ²Π½ΠΎ Π² ΡΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Python Π±ΡΠ΄Π΅Ρ ΠΈΡΠΊΠ°ΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ Π² ΠΈΠ΅ΡΠ°ΡΡ ΠΈΠΈ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΏΠΎΠΊΠ° Π½Π΅ Π½Π°ΠΉΠ΄Π΅Ρ Π½ΡΠΆΠ½ΡΠΉ ΠΈΠ»ΠΈ Π½Π΅ Π²ΡΠ΄Π°ΡΡ ΠΎΡΠΈΠ±ΠΊΡ.
Π ΠΎΠΌΠ±ΠΎΠ²ΠΈΠ΄Π½ΠΎΠ΅ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅
Π Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΡ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΡΡ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ.
ΠΠ»Π³ΠΎΡΠΈΡΠΌ C3-Π»ΠΈΠ½Π΅Π°ΡΠΈΠ·Π°ΡΠΈΠΈ
ΠΠ°ΠΊΠΈΠ΅ ΠΊΡΠΈΡΠ΅ΡΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π΄Π»Ρ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ²?
ΠΠ»Π³ΠΎΡΠΈΡΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΡΠ΅Ρ ΡΡΠΈΠΌ ΡΡΠ»ΠΎΠ²ΠΈΡΠΌ Π±ΡΠ» ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ Π² 1996 Π³ΠΎΠ΄Π° ΠΈ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ C3 superclass linearization. ΠΠΈΠ½Π΅Π°ΡΠΈΠ·Π°ΡΠΈΡ Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ β ΡΡΠΎ ΠΏΡΠΎΡΠ΅ΡΡ ΠΏΡΠ΅Π²ΡΠ°ΡΠ΅Π½ΠΈΡ Π³ΡΠ°ΡΠ° Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ Π² ΠΏΠ»ΠΎΡΠΊΠΈΠΉ ΡΠΏΠΈΡΠΎΠΊ. Π Π‘3 ΠΎΠ½ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΈΠ·-Π·Π° Π½Π°Π»ΠΈΡΠΈΡ ΡΡΠ΅Ρ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΡΠ²ΠΎΠΉΡΡΠ². ΠΠ°ΠΆΠ½Π΅ΠΉΡΠ΅Π΅ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ Π·Π΄Π΅ΡΡ β ΡΡΠΎ ΠΌΠΎΠ½ΠΎΡΠΎΠ½Π½ΠΎΡΡΡ β ΡΡΠΎ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΡΠ΅Π±ΡΠ΅Ρ ΡΠΎΠ±Π»ΡΠ΄Π΅Π½ΠΈΡ Π² Π»ΠΈΠ½Π΅Π°ΡΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠ»Π°ΡΡΠ°-ΠΏΠΎΡΠΎΠΌΠΊΠ° ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΠΏΠΎΡΡΠ΄ΠΊΠ° ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠ»Π°ΡΡΠΎΠ²-ΠΏΡΠ°ΡΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΉ, ΡΡΠΎ ΠΈ Π² Π»ΠΈΠ½Π΅Π°ΡΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠ»Π°ΡΡΠ°-ΡΠΎΠ΄ΠΈΡΠ΅Π»Ρ.
Π Python Π΄Π°Π½Π½ΡΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΏΠΎΡΠ²ΠΈΠ»ΡΡ Π΅ΡΠ΅ Π² Π΄Π°Π»Π΅ΠΊΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ 2.3.
ΠΡΠ»ΠΈ Π²Ρ ΠΎΠ±Π»Π°Π΄Π°Π΅ΡΠ΅ Π½Π°Π²ΡΠΊΠ°ΠΌΠΈ ΡΡΠ΅Π½ΠΈΡ Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΎΠΉ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΎΠΉ Π»ΠΈΡΠ΅ΡΠ°ΡΡΡΡ, ΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ Ρ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΠΎΠΌ ΡΡΠ°ΡΡΠΈ, PDF Ρ Π½Π°ΡΠ΅Π» Π½Π° ΠΏΡΠΎΡΡΠΎΡΠ°Ρ ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΠ°. ΠΡΡΡ ΠΈ Π·Π°ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° Π½Π° ΡΡΡΡΠΊΠΎΠΌ ΡΠ·ΡΠΊΠ΅ Π² ΡΡΠ°ΡΡΠ΅ Π½Π° Π₯Π°Π±ΡΠ΅. Π’Π°ΠΌ ΠΆΠ΅ Π΅ΡΡΡ ΠΈ ΠΏΡΠΈΠΌΠ΅ΡΡ ΡΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Π»ΠΈΠ½Π΅Π°ΡΠΈΠ·Π°ΡΠΈΠΉ.
ΠΠΎΡΠ΅ΠΌΡ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠ°ΠΊ?
ΠΠ΅ΡΠ½Π΅ΠΌΡΡ ΠΊ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌΡ ΠΏΡΠΈΠΌΠ΅ΡΡ.
ΠΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ ΠΎΠ±ΠΎΡΠ½ΠΎΠ²Π°ΡΡ ΡΠ°ΠΊΠΎΠΉ ΠΏΠΎΡΡΠ΄ΠΎΠΊ. C Π½Π°ΡΠ°Π»Π°, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ ΠΆΠ΅, ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ Π² MRO-ΡΠΏΠΈΡΠΎΠΊ ΠΎΠΊΠΎΠ½Π΅ΡΠ½ΡΠΉ ΠΊΠ»Π°ΡΡ Z. ΠΠΎΡΠΎΠΌ ΠΊΠ»Π°ΡΡ K1, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ ΠΈΠ΄Π΅Ρ ΠΏΠ΅ΡΠ²ΡΠΌ Π² ΡΠΏΠΈΡΠΊΠ΅ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ Z. ΠΠ°Π»Π΅Π΅, Π²ΠΈΠ΄ΠΈΠΌ, ΡΡΠΎ ΠΈΠ΄Π΅Ρ ΠΊΠ»Π°ΡΡ A. ΠΡΠΎΡ ΠΊΠ»Π°ΡΡ Π±ΠΎΠ»ΡΡΠ΅ Π½ΠΈΠΊΠΎΠΌΡ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΌ, ΠΊΡΠΎΠΌΠ΅ ΠΊΠ°ΠΊ K1, ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ A ΡΡΠ°Π·Ρ ΠΏΠΎΡΠ»Π΅ K1, Π½Π΅ Π½Π°ΡΡΡΠΈΠ² Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΠΏΡΠ°Π²ΠΈΠ». ΠΠΎΡΠ»Π΅ A Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ΄ΡΠΈ ΠΊΠ»Π°ΡΡ B, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π·Π° Π½ΠΈΠΌ ΠΏΡΠΈΡΠ»ΠΎΡΡ Π±Ρ Π³Π΄Π΅-ΡΠΎ Π΅ΡΠ΅ Π²ΠΎΡΠΊΠ½ΡΡΡ K2, ΠΈ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΎΡΡ Π±Ρ ΡΠ°ΠΊ, ΡΡΠΎ K2 Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ·ΠΆΠ΅ B, ΡΡΠΎ Π·Π°ΠΏΡΠ΅ΡΠ΅Π½ΠΎ. ΠΠ΅Ρ! Π‘ΡΠ°Π²ΠΈΠΌ ΡΠΎΠ³Π΄Π° ΡΠ½Π°ΡΠ°Π»Π° K2, ΠΏΠΎΡΠΎΠΌ ΡΠΎΠ»ΡΠΊΠΎ B. ΠΠ°Π»Π΅Π΅, ΠΏΠΎ ΡΡ ΠΎΠΆΠ΅ΠΉ ΠΏΡΠΈΡΠΈΠ½Π΅ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΡΡΠ°Π²ΠΈΡΡ K3, Π΄Π°Π±Ρ ΠΎΠ½ Π½Π΅ ΠΎΠΊΠ°Π·Π°Π»ΡΡ ΠΏΠΎΡΠ»Π΅ ΡΠ²ΠΎΠ΅Π³ΠΎ ΡΠΎΠ΄ΠΈΡΠ΅Π»Ρ C. ΠΠΎΠΏΠΎΠ»Π½ΡΠ΅ΠΌ ΡΠΏΠΈΡΠΎΠΊ ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ D ΠΈ E Π² ΠΈΡ ΠΏΠΎΡΡΠ΄ΠΊΠ΅. Π ΠΎΡΡΠ°Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π·Π°Π²Π΅ΡΡΠΈΡΡ ΡΠΏΠΈΡΠΎΠΊ ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ O, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ±ΡΠΈΠΉ ΡΠΎΠ΄ΠΈΡΠ΅Π»Ρ Π΄Π»Ρ Π²ΡΠ΅Ρ ΠΏΡΠΎΡΠΈΡ ΠΊΠ»Π°ΡΡΠΎΠ², ΠΈ object, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ΄ΠΈΡΠ΅Π»Ρ Π΄Π»Ρ O. ΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΡΠ΅ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΡΠΎΠ΄ΠΈΡΠ΅Π»Ρ Π½Π΅ ΡΡΠΎΠΈΡ ΠΏΠ΅ΡΠ΅Π΄ ΡΡΠΎΠΈΠΌ ΠΏΠΎΡΠΎΠΌΠΊΠΎΠΌ (Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ ΡΡΠΎΡΡΡ ΠΏΠ΅ΡΠ΅Π΄ ΡΡΠΆΠΈΠΌ). Π ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠ»Π°ΡΡΠΎΠ² Π² MRO ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½ Ρ ΠΏΠΎΡΡΠ΄ΠΊΠΎΠΌ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ.
ΠΠ°ΡΠΈΠ°Π½Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΠΈ Π΅Π³ΠΎ ΡΠ°Π±ΠΎΡΡ Π½Π° ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Ρ ΡΠ°Π·ΠΌΠ΅ΡΡΠΈΠ» Π·Π΄Π΅ΡΡ (ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΈ ΠΏΠΎΠΈΠ³ΡΠ°ΡΡΡΡ ΠΏΡΡΠΌΠΎ Π±ΡΠ°ΡΠ·Π΅ΡΠ΅. ΠΠ²ΡΠΎΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ β Π½Π΅ Ρ. ΠΠ°ΡΠ΅Π» Π½Π° Github.
ΠΠΎΠ³Π΄Π° Π½Π΅Π»ΡΠ·Ρ Π»ΠΈΠ½Π΅Π°ΡΠΈΠ·ΠΎΠ²Π°ΡΡ?
ΠΡΠΌΠ°Ρ, ΡΠ°ΠΊΠΎΠΉ Π²ΠΎΠΏΡΠΎΡ ΠΈΠΌΠ΅Π΅Ρ ΠΌΠ΅ΡΡΠΎ Π±ΡΡΡ Π½Π° ΡΠΎΠ±Π΅ΡΠ΅Π΄ΠΎΠ²Π°Π½ΠΈΠΈ. ΠΠ°Ρ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠΏΡΠΎΡΠΈΡΡ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΠΈ ΠΊΠ»Π°ΡΡΠΎΠ², Π½Π΅ ΠΏΠΎΠ΄Π΄Π°ΡΡΠΈΡ ΡΡ Π»ΠΈΠ½Π΅ΡΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΌΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ. ΠΠΎΡ ΠΏΠ΅ΡΠ²ΡΠΉ Π½Π΅ΡΠ°Π·ΡΠ΅ΡΠΈΠΌΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ:
ΠΠ»ΠΈ Π²ΠΎΡ Π²ΡΠΎΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ:
ΠΠ°ΠΊ Π·Π°Π΄Π°ΡΡ ΡΠ²ΠΎΠΉ ΠΏΠΎΡΡΠ΄ΠΎΠΊ MRO?
ΠΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΌΠ΅ΡΠ°ΠΊΠ»Π°ΡΡΡ. ΠΠ»Ρ Β«ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠ½ΠΎΠ³ΠΎΒ» ΠΊΠ»Π°ΡΡΠ° ΠΌΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ ΠΎΡΠΎΠ±ΡΠΉ ΠΌΠ΅ΡΠ°ΠΊΠ»Π°ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠ²Π½ΠΎ ΠΌΠ΅ΡΠΎΠ΄ mro(), ΡΠΊΠ°Π·ΡΠ²Π°Ρ Π²ΡΡΡΠ½ΡΡ, ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠΌΠ΅Π½Π½ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ². ΠΠ° ΠΏΠ΅ΡΠ²ΠΎΠΌ Β«Π½Π΅ΡΠ°Π·ΡΠ΅ΡΠΈΠΌΠΎΠΌΒ» ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ ΡΠ°ΠΊΠΎΠ΅:
Π’Ρ super()!
ΠΠ½ΠΎΠ³Π΄Π° ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ°ΡΠΈΡΡΡΡ ΠΊ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠΌΡ ΠΊΠ»Π°ΡΡΡ ΠΈΠ· Π΄ΠΎΡΠ΅ΡΠ½Π΅Π³ΠΎ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ Π΄ΠΎΡΠ΅ΡΠ½ΠΈΠΉ ΠΊΠ»Π°ΡΡ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΌΠ΅ΡΠΎΠ΄ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ, ΡΠΎ Π΅ΠΌΡ, ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΡΠ»Π΅Π΄ΡΠ΅Ρ Π²ΡΠ·Π²Π°ΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°. ΠΠ΅Π»Π°ΡΡ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΠΊΠ»Π°ΡΡΠ° Π½Π΅ ΠΎΡΠ΅Π½Ρ ΡΠ΄ΠΎΠ±Π½ΠΎ ΠΈ ΠΏΠΎΡΠΎΠΆΠ΄Π°Π΅Ρ ΠΊΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΠΈ Π±Π°Π³ΠΎΠ², ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ, Π΅ΡΠ»ΠΈ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ΅, ΠΈ ΠΌΡ ΠΌΠ°Π»ΠΎ ΡΡΠΎ Π·Π½Π°Π΅ΠΌ ΠΎΠ± ΡΡΡΡΠΎΠΉΡΡΠ²Π΅ ΠΈ ΡΠΎΠ΄ΡΡΠ²Π΅Π½Π½ΡΡ ΡΠ²ΡΠ·ΡΡ Π½Π°ΡΠ»Π΅Π΄ΡΠ΅ΠΌΡΡ ΠΊΠ»Π°ΡΡΠΎΠ². Π’Π΅ΠΌ Π±ΠΎΠ»Π΅Π΅ Π΅ΡΠ»ΠΈ ΡΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡΡΡ, Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Π²ΡΠ΅ Π²ΡΠ·ΠΎΠ²Ρ Π² Π°ΠΊΡΡΠ°Π»ΡΠ½ΠΎΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ. ΠΠΎΡΡΠΎΠΌΡ ΠΏΠ»ΠΎΡ ΠΎ ΠΏΠΈΡΠ°ΡΡ ΡΠ°ΠΊ:
ΠΠΎΡΠ°Π·Π΄ΠΎ ΡΠ΄ΠΎΠ±Π½Π΅Π΅ ΠΎΠ±ΡΠ°ΡΠΈΡΡΡΡ ΠΊ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌΡ Π² ΡΠ΅ΠΏΠΎΡΠΊΠ° MRO ΠΊΠ»Π°ΡΡΡ-ΡΠΎΠ΄ΠΈΡΠ΅Π»Ρ ΡΠ΅ΡΠ΅Π· super().
super() β ΡΡΠΎ ΠΎΡΠΎΠ±Π΅Π½Π½ΡΠΉ ΠΏΡΠΎΠΊΡΠΈ-ΠΊΠ»Π°ΡΡ ΠΊ Π½ΡΠΆΠ½ΠΎΠΌΡ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠΌΡ ΠΊΠ»Π°ΡΡΡ. ΠΠΎΡ ΡΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΠ°ΡΠΈΡΡΡΡ ΠΊ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠΌΡ ΠΊΠ»Π°ΡΡΡ:
Π ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΈΡ ΠΊΠ»Π°ΡΡΠ°Ρ ΡΠΎΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ super(), ΠΏΠΎΡΡΠΎΠΌΡ Π²ΡΠ΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΡ ΡΡΠ°Π±ΠΎΡΠ°ΡΡ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ MRO.
Π‘ΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ Π΄Π»Ρ ΠΊΠ°Π½Π°Π»Π° @pyway. ΠΠΎΠ΄ΠΏΠΈΡΡΠ²Π°ΠΉΡΠ΅ΡΡ Π½Π° ΠΌΠΎΠΉ ΠΊΠ°Π½Π°Π» Π² Π’Π΅Π»Π΅Π³ΡΠ°ΠΌ @pyway 👈
ΠΠΎΡΡΠ΄ΠΎΠΊ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² (MRO) Π² Python Π² ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠΌ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠΈ
Π ΡΡΠΎΠΌ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π΅ ΠΌΡ ΡΠ·Π½Π°Π΅ΠΌ ΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ·Π²Π΅ΡΡΠ΅Π½ ΠΊΠ°ΠΊ MRO. ΠΡΠΎ Π²Π°ΠΆΠ½Π°Ρ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ Python.
ΠΠΎΡΡΠ΄ΠΎΠΊ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² (MRO) Π² Python ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ ΠΏΡΡΡ ΠΏΠΎΠΈΡΠΊΠ° ΠΊΠ»Π°ΡΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° Π² ΠΊΠ»Π°ΡΡΠ°Ρ , ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅.
ΠΡΡΡΠΏΠ»Π΅Π½ΠΈΠ΅
ΠΠ°ΠΊ ΠΌΡ Π·Π½Π°Π΅ΠΌ, Π½Π°ΡΠ»Π΅Π΄ΡΠ΅ΠΌΡΠΉ ΠΊΠ»Π°ΡΡ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΈΠΌ ΠΊΠ»Π°ΡΡΠΎΠΌ ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡΠΎΠΌ, Π° Π½Π°ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠ»Π°ΡΡ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ Π΄ΠΎΡΠ΅ΡΠ½ΠΈΠΌ ΠΊΠ»Π°ΡΡΠΎΠΌ ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡΠΎΠΌ. ΠΡΠΈ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠΌ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠ»Π°ΡΡ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΡΡΠΎΡΡΡ ΠΈΠ· ΠΌΠ½ΠΎΠ³ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΌΠ΅ΡΠΎΠ΄ ΠΏΠΎΡΡΠ΄ΠΊΠ° ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° ΠΏΠΎΡΡΠ΄ΠΊΠ°, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π±Π°Π·ΠΎΠ²ΡΠΉ ΠΊΠ»Π°ΡΡ.
ΠΡΠΎΡΠ΅ Π³ΠΎΠ²ΠΎΡΡ, ΠΌΠ΅ΡΠΎΠ΄ ΠΈΠ»ΠΈ Π°ΡΡΠΈΠ±ΡΡΡ ΠΈΡΡΠ»Π΅Π΄ΡΡΡΡΡ Π² ΡΠ΅ΠΊΡΡΠ΅ΠΌ ΠΊΠ»Π°ΡΡΠ΅, Π΅ΡΠ»ΠΈ ΠΌΠ΅ΡΠΎΠ΄ ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ, ΠΏΠΎΠΈΡΠΊ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡ ΠΊ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΈΠΌ ΠΊΠ»Π°ΡΡΠ°ΠΌ ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅. ΠΡΠΎ ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΠΎΠΈΡΠΊΠ° Π² Π³Π»ΡΠ±ΠΈΠ½Ρ.
ΠΠ½ ΠΈΠ³ΡΠ°Π΅Ρ Π²Π°ΠΆΠ½ΡΡ ΡΠΎΠ»Ρ Π² ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠΌ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΠΌΠ΅ΡΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΡΠΏΠ΅ΡΠΊΠ»Π°ΡΡΠ°Ρ .
Π§ΡΠΎΠ±Ρ Π»ΡΡΡΠ΅ ΠΏΠΎΠ½ΡΡΡ ΡΡΠΎ, Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ.
Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²ΡΡΠ΅ ΠΊΠΎΠ΄Π΅ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΠ΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅. ΠΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠ»ΠΈ ΡΡΠΈ ΠΊΠ»Π°ΡΡΠ° Ρ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ A, B ΠΈ C, ΠΈ ΡΡΠΈ ΠΊΠ»Π°ΡΡΡ ΠΈΠΌΠ΅ΡΡ ΠΎΠ΄Π½ΠΎΠΈΠΌΠ΅Π½Π½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ myname(). ΠΡ ΡΠΎΠ·Π΄Π°Π»ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΊΠ»Π°ΡΡΠ° C. ΠΠ±ΡΠ΅ΠΊΡ Π²ΡΠ·Π²Π°Π» ΠΊΠ»Π°ΡΡ C, Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ ΠΊΠ»Π°ΡΡ C ΡΠ½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π» ΠΌΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° A.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌΡΡ Ρ Π΅ΡΠ΅ ΠΎΠ΄Π½ΠΈΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΌ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ.
Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²ΡΡΠ΅ ΠΊΠΎΠ΄Π΅ ΠΌΡ ΡΠΎΠ·Π΄Π°Π»ΠΈ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΊΠ»Π°ΡΡ D Π±Π΅Π· ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π°ΡΡΠΈΠ±ΡΡΠΎΠ² ΠΊΠ»Π°ΡΡΠ°, ΡΠ½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π²ΡΠΈΡ ΠΊΠ»Π°ΡΡΡ B ΠΈ C. ΠΠΎΠ³Π΄Π° ΠΌΡ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄ myname(), ΠΎΠ½ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡ ΠΊ ΠΊΠ»Π°ΡΡΡ D ΠΈ ΠΈΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΡ myname(). ΠΠΎ Ρ ΠΊΠ»Π°ΡΡΠ° D Π½Π΅Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΠΏΠΎΠΈΡΠΊ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡ ΠΊ ΠΊΠ»Π°ΡΡΡ B, ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΡ myname() ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ. ΠΠΎΠΈΡΠΊ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ.
ΠΡΠ»ΠΈ Ρ ΠΊΠ»Π°ΡΡΠ° B Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΌΠ΅ΡΠΎΠ΄Π°, ΠΎΠ½ Π²ΡΠ·ΠΎΠ²Π΅Ρ ΠΌΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° C.
ΠΠ΄Π΅ΡΡ ΠΌΡ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΠΌ Π²Π°ΠΌ ΡΠ΄Π°Π»ΠΈΡΡ ΠΌΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° B ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ. Π‘Π΄Π΅Π»Π°Π² ΡΡΠΎ, Π²Ρ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Π°.
ΠΠΎΡΡΠ΄ΠΎΠΊ ΡΡΠ°ΡΠΎΠ³ΠΎ ΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΡΠΈΠ»Ρ
Π Π±ΠΎΠ»Π΅Π΅ ΡΡΠ°ΡΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ Python (2.1) ΠΌΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΡΠ°ΡΡΡ ΠΊΠ»Π°ΡΡΠΎΠ², Π½ΠΎ Π² Python Π²Π΅ΡΡΠΈΠΈ 2.2 ΠΈ Π½ΠΎΠ²Π΅Π΅ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½ΠΎΠ²ΡΠ΅ ΠΊΠ»Π°ΡΡΡ. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π² Python 3 Π΅ΡΡΡ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΡΠ΅ (Π½ΠΎΠ²ΡΠ΅) ΠΊΠ»Π°ΡΡΡ. ΠΠ΅ΡΠ²ΡΠΉ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° ΡΡΠΈΠ»Ρ Π½Π°ΡΠ»Π΅Π΄ΡΠ΅ΡΡΡ ΠΎΡ ΠΊΠΎΡΠ½Π΅Π²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° Β«ΠΎΠ±ΡΠ΅ΠΊΡΒ» Python. ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ β
Π‘ΡΠΈΠ»Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΎΠ±ΠΎΠΈΡ ΠΊΠ»Π°ΡΡΠΎΠ² ΡΠ°Π·Π½ΡΠΉ. Π ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠΈ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΊΠ»Π°ΡΡΡ ΡΡΠ°ΡΠΎΠ³ΠΎ ΡΡΠΈΠ»Ρ ΡΠ»Π΅Π΄ΡΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ Β«ΡΠ½Π°ΡΠ°Π»Π° Π² Π³Π»ΡΠ±ΠΈΠ½ΡΒ» ΡΠ»Π΅Π²Π° Π½Π°ΠΏΡΠ°Π²ΠΎ (DLR), ΡΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ ΠΊΠ»Π°ΡΡΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΡΠΈΠ»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌ Π»ΠΈΠ½Π΅Π°ΡΠΈΠ·Π°ΡΠΈΠΈ C3 ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ.
ΠΠ»Π³ΠΎΡΠΈΡΠΌ DLR
Python ΡΠΎΠ·Π΄Π°Π΅Ρ ΡΠΏΠΈΡΠΎΠΊ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΏΡΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ. ΠΡΠΎΡ ΡΠΏΠΈΡΠΎΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΎΠΉ ΠΌΠ΅ΡΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π²ΡΠ·Π²Π°Π½ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ°ΠΌΠΈ.
ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡΡ, ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Ρ ΠΎΡ Π΅Π³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ, ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Π° Π±ΡΠ΄Π΅Ρ ΡΠ½Π°ΡΠ°Π»Π° ΠΈΡΠΊΠ°ΡΡ Π² Π³Π»ΡΠ±ΠΈΠ½Ρ, Π° Π·Π°ΡΠ΅ΠΌ ΠΈΠ΄ΡΠΈ ΡΠ»Π΅Π²Π° Π½Π°ΠΏΡΠ°Π²ΠΎ. ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡΠΈΠΌΠ΅Ρ.
Π‘Π½Π°ΡΠ°Π»Π° Π°Π»Π³ΠΎΡΠΈΡΠΌ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΊΠ°ΡΡ Π²ΡΠ·Π²Π°Π½Π½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ Π² ΠΊΠ»Π°ΡΡΠ΅ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ°. ΠΡΠ»ΠΈ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Ρ, ΠΎΠ½ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡ ΠΊ ΠΏΠ΅ΡΠ²ΠΎΠΌΡ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠΌΡ ΠΊΠ»Π°ΡΡΡ. ΠΠ°ΡΠ΅ΠΌ ΠΎΠ±ΡΠ°ΡΠΈΡΡΡΡ ΠΊ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΠΌ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°. Π’Π°ΠΊ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡΡΡ Π΄ΠΎ ΠΊΠΎΠ½ΡΠ° Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠ»Π°ΡΡΠΎΠ².
Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄Π°:
ΠΠΎ A Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΡΡΡΡΡΠ²ΠΎΠ²Π°ΡΡ Π΄Π²Π°ΠΆΠ΄Ρ, ΠΏΠΎΡΡΠΎΠΌΡ β
ΠΡΠΎΡ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΡΡΠ°Π½Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ. ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ Π½ΠΈΠΆΠ΅.
Π‘ΠΎΠ³Π»Π°ΡΠ½ΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ DLR, ΠΏΠΎΡΡΠ΄ΠΎΠΊ Π±ΡΠ΄Π΅Ρ E, C, D, B, A. Π ΠΊΠ»Π°ΡΡΠ΅ C ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΎΠ±ΠΌΠ΅Π½ ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ A ΠΈ B, ΡΡΠΎ ΠΎΡΠ΅Π½Ρ Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°ΡΠ½ΠΎ. ΠΠ½Π°ΡΠΈΡ, Π°Π»Π³ΠΎΡΠΈΡΠΌ Π½Π΅ ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ ΠΌΠΎΠ½ΠΎΡΠΎΠ½Π½ΠΎΡΡΠΈ.
Π‘Π°ΠΌΡΡΠ»Π΅ ΠΠ΅ΡΠ΄ΠΎΠ½ΠΈ Π±ΡΠ» ΠΏΠ΅ΡΠ²ΡΠΌ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠΎΠΌ, ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ²ΡΠΈΠΌ Π½Π΅ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°ΠΌΠΈ MRO.
ΠΠ»Π³ΠΎΡΠΈΡΠΌ Π»ΠΈΠ½Π΅Π°ΡΠΈΠ·Π°ΡΠΈΠΈ C3
ΠΠ»Π³ΠΎΡΠΈΡΠΌ Π»ΠΈΠ½Π΅Π°ΡΠΈΠ·Π°ΡΠΈΠΈ C3 β Π»ΡΡΡΠ°Ρ Π²Π΅ΡΡΠΈΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° DLR, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ ΡΡΡΡΠ°Π½ΡΠ΅Ρ Π½Π΅ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡΡ. ΠΡΠΎΡ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΈΠΌΠ΅Π΅Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Ρ Π½ΠΈΠΆΠ΅.
ΠΡΠ°Π²ΠΈΠ»Π° Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° Π»ΠΈΠ½Π΅Π°ΡΠΈΠ·Π°ΡΠΈΠΈ C3
Π‘ΠΏΠΎΡΠΎΠ± Π΄Π»Ρ ΠΏΠΎΡΡΠ΄ΠΊΠ° ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄Π°
Python ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π΄Π²Π° ΡΠΏΠΎΡΠΎΠ±Π° ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΊΠ»Π°ΡΡΠ° β Π°ΡΡΠΈΠ±ΡΡ __mro__ ΠΈΠ»ΠΈ ΠΌΠ΅ΡΠΎΠ΄ mro(). Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΡΠΎΠ±ΡΠ°Π·ΠΈΡΡ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ², Π² ΠΊΠΎΡΠΎΡΡΡ ΠΎΠ½ΠΈ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½Ρ.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌΡΡ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅.
ΠΠ°ΠΊ Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· Π²ΡΡΠ΅ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π²ΡΠ²ΠΎΠ΄Π°, ΠΌΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄Π°. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π°Π»Π³ΠΎΡΠΈΡΠΌ Π»ΠΈΠ½Π΅Π°ΡΠΈΠ·Π°ΡΠΈΠΈ C3 ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π΄Π»Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ.
ΠΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠΎΠ².
Python ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠΎΡΠΌΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ. ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠ° Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ Π±Π°Π·ΠΎΠ²ΡΠΌΠΈ ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
Π§ΡΠΎΠ±Ρ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠΈΡΡ ΠΏΠΎΠ²ΡΠΎΡΠ½ΡΠΉ Π΄ΠΎΡΡΡΠΏ ΠΊ Π±Π°Π·ΠΎΠ²ΡΠΌ ΠΊΠ»Π°ΡΡΠ°ΠΌ, Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ Π»ΠΈΠ½Π΅Π°ΡΠΈΠ·ΡΠ΅Ρ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΠΏΠΎΠΈΡΠΊΠ° ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎΠ±Ρ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΡΠ»Π΅Π²Π° Π½Π°ΠΏΡΠ°Π²ΠΎ, ΡΠΊΠ°Π·Π°Π½Π½ΡΠΉ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΊΠ»Π°ΡΡΠ΅, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠΎΠ΄ΠΈΡΠ΅Π»Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· ΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΌΠΎΠ½ΠΎΡΠΎΠ½Π½ΡΠΌ. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΊΠ»Π°ΡΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡΠΎΠΌ, Π½Π΅ Π·Π°ΡΡΠ°Π³ΠΈΠ²Π°Ρ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠ° Π΅Π³ΠΎ ΡΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΉ. Π ΡΠΎΠ²ΠΎΠΊΡΠΏΠ½ΠΎΡΡΠΈ ΡΡΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π½Π°Π΄Π΅ΠΆΠ½ΡΠ΅ ΠΈ ΡΠ°ΡΡΠΈΡΡΠ΅ΠΌΡΠ΅ ΠΊΠ»Π°ΡΡΡ Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΡΠΌ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
ΠΠ΅ Π²ΡΠ΅ ΠΊΠ»Π°ΡΡΡ ΠΏΠΎΠ΄Π΄Π°ΡΡΡΡ Π»ΠΈΠ½Π΅Π°ΡΠΈΠ·Π°ΡΠΈΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠΌ MRO.
ΠΠΎΡ ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π°Π»Π³ΠΎΡΠΈΡΠΌ Π»ΠΈΠ½Π΅Π°ΡΠΈΠ·Π°ΡΠΈΠΈ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΡΡΠΈ ΠΏΠΎΠΈΡΠΊΠ° Π² ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ΅ΡΠΊΠΎΠΉ Π½ΠΎΡΠ°ΡΠΈΠΈ (Π΄Π»Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ° Π²ΡΡΠ΅):
ΠΠ°Π»ΡΡΠ΅ ΠΎΠ±ΡΡΠ²Π»ΡΠ΅ΠΌ ΠΊΠ»Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π΅ΡΠ»ΠΈ Π²Ρ Π±Π΅ΡΡΡΠ΅ Π½Π° ΡΠ΅Π±Ρ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ Π·Π° MRO, Python Π½Π΅ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡ Π½ΠΈΠΊΠ°ΠΊΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΏΠΎΠΊΠΎΠΉΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΠΈ ΠΏΠΎΠΈΡΠΊ Π² ΠΏΡΠ΅Π΄ΠΊΠ°Ρ ΡΠ°Π½ΡΡΠ΅ ΡΠ΅ΠΌ Π² ΠΏΠΎΡΠΎΠΌΠΊΠ°Ρ . Π Ρ ΠΎΡΡ ΡΡΠΎ Π½Π΅ ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½Π°Ρ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ°, Π½ΠΎ ΡΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.
ΠΡΠ»ΠΎΠΆΠ½Π΅Π½ΠΈΡ Π² ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠΌ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠΈ Python.
Π§ΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ, ΠΊΠΎΠ³Π΄Π° ΠΊΠ»Π°ΡΡΡ, ΠΎΡ ΠΊΠΎΡΠΎΡΡΡ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅, ΠΈΠΌΠ΅ΡΡ ΠΎΠ±ΡΠΈΠΉ Π°ΡΡΠΈΠ±ΡΡ? Π§ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π΄ΠΎΡΠ΅ΡΠ½ΠΈΠΉ ΠΊΠ»Π°ΡΡ? ΠΠ°Π²Π°ΠΉΡΠ΅ Π²ΠΎΠ·ΡΠΌΠ΅ΠΌ ΡΡΠΈ ΠΊΠ»Π°ΡΡΠ° Π, Π ΠΈ Π‘.
ΠΠ°ΠΊ ΠΌΡ Π²ΠΈΠ΄ΠΈΠΌ, ΠΊΠ»Π°ΡΡ, Π½Π°Π·Π²Π°Π½Π½ΡΠΉ ΠΏΠ΅ΡΠ²ΡΠΌ Π² Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠΈ, ΠΏΠ΅ΡΠ΅Π΄Π°Π΅Ρ ΡΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄ΠΎΡΠ΅ΡΠ½Π΅ΠΌΡ ΠΊΠ»Π°ΡΡΡ Π΄Π»Ρ ΠΎΠ±ΡΠ΅Π³ΠΎ Π°ΡΡΠΈΠ±ΡΡΠ°. Π’ΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΈ Ρ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ/ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ ΠΊΠ»Π°ΡΡΠ° Python.
ΠΠΎΡΡΠ΄ΠΎΠΊ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π² Python
Π ΡΡΠΎΠΉ Π·Π°ΠΌΠ΅ΡΠΊΠ΅ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΡΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌ MRO Π‘3 ΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ. Π₯ΠΎΡΡ ΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π½Π΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°ΡΡΡΡ ΡΠ°ΠΌΠΊΠ°ΠΌΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ°, Ρ Π°ΠΊΡΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π» ΡΠ²ΠΎΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΠΈΡΠΎΠ½Π΅. Π ΠΊΠΎΠ½ΡΠ΅ ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½ ΡΠΏΠΈΡΠΎΠΊ ΠΏΠΎΠ»Π΅Π·Π½ΡΡ ΡΡΡΠ»ΠΎΠΊ ΠΏΠΎ Π΄Π°Π½Π½ΠΎΠΉ ΡΠ΅ΠΌΠ΅.
ΠΠΎΡΡΠ΄ΠΎΠΊ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² (method resolution order) ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΠΈΡΠΎΠ½Ρ Π²ΡΡΡΠ½ΠΈΡΡ, ΠΈΠ· ΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°-ΠΏΡΠ΅Π΄ΠΊΠ° Π½ΡΠΆΠ½ΠΎ Π²ΡΠ·ΡΠ²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄, Π΅ΡΠ»ΠΈ ΠΎΠ½ Π½Π΅ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π² ΠΊΠ»Π°ΡΡΠ΅-ΠΏΠΎΡΠΎΠΌΠΊΠ΅. ΠΡΠ»ΠΈ Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΌΠΊΠ° Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΏΡΠ΅Π΄ΠΎΠΊ, ΡΠΎ Π·Π°Π΄Π°ΡΠ° ΡΡΠΈΠ²ΠΈΠ°Π»ΡΠ½Π°. ΠΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π²ΠΎΡΡ ΠΎΠ΄ΡΡΠΈΠΉ ΠΏΠΎΠΈΡΠΊ ΠΏΠΎ Π²ΡΠ΅ΠΉ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΠΈ. ΠΡΠ»ΠΈ ΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅, ΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠΎΠ»ΠΊΠ½ΡΡΡΡΡ ΡΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠΏΠΈΡΠ°Π½Ρ Π½ΠΈΠΆΠ΅.
Π ΡΡΠ°ΡΡΡ Π²Π΅ΡΡΠΈΡΡ ΠΠΈΡΠΎΠ½Π° ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π±ΡΠ» Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΡΠΌ: ΠΏΠΎΠΈΡΠΊ Π²ΡΠ»ΡΡ Π²ΠΎ Π²ΡΠ΅Ρ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΈΡ ΠΊΠ»Π°ΡΡΠ°Ρ ΡΠ»Π΅Π²Π° Π½Π°ΠΏΡΠ°Π²ΠΎ Π½Π° ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΡ Π³Π»ΡΠ±ΠΈΠ½Ρ. Π’.Π΅. Π΅ΡΠ»ΠΈ Ρ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ Π½Π΅ Π±ΡΠ»ΠΎ Π½ΡΠΆΠ½ΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π°, Π½ΠΎ Π±ΡΠ»ΠΈ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΠΈ, ΡΠΎ ΠΏΠΎΠΈΡΠΊ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠ»ΡΡ Π² Π½ΠΈΡ ΠΏΠΎ ΡΠ΅ΠΌ ΠΆΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌ. ΠΠ»Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ° Π²ΠΎΠ·ΠΌΡΠΌ ΡΡΡΡΠΊΡΡΡΡ:
ΠΡΠΈ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΈ ΠΊ ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° ΠΊΠ»Π°ΡΡΠ° E ΡΠ°ΠΊΠΎΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΏΡΠΎΠΈΠ·Π²ΡΠ» Π±Ρ ΠΏΠΎΠΈΡΠΊ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ Π² ΠΊΠ»Π°ΡΡΠ°Ρ E, B, A, D ΠΈ C. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΏΠΎΠΈΡΠΊ Π²ΡΠ»ΡΡ ΡΠ½Π°ΡΠ°Π»Π° Π² ΠΏΠ΅ΡΠ²ΠΎΠΌ ΠΊΠ»Π°ΡΡΠ΅-ΡΠΎΠ΄ΠΈΡΠ΅Π»Π΅ ΠΈ Π²ΠΎ Π²ΡΠ΅Ρ Π΅Π³ΠΎ ΠΏΡΠ΅Π΄ΠΊΠ°Ρ , Π·Π°ΡΠ΅ΠΌ Π²ΠΎ Π²ΡΠΎΡΠΎΠΌ ΠΊΠ»Π°ΡΡΠ΅-ΡΠΎΠ΄ΠΈΡΠ΅Π»Π΅ ΡΠΎ Π²ΡΠ΅ΠΌΠΈ ΠΏΡΠ΅Π΄ΠΊΠ°ΠΌΠΈ ΠΈ Ρ. Π΄. ΠΡΠΎΡ ΡΠΏΠΎΡΠΎΠ± Π½Π΅ Π²ΡΠ·ΡΠ²Π°Π» ΠΎΡΠΎΠ±ΡΡ Π½Π°ΡΠ΅ΠΊΠ°Π½ΠΈΠΉ, ΠΏΠΎΠΊΠ° Ρ ΠΊΠ»Π°ΡΡΠΎΠ² Π½Π΅ Π±ΡΠ»ΠΎ ΠΎΠ±ΡΠ΅Π³ΠΎ ΠΏΡΠ΅Π΄ΠΊΠ°. ΠΠ΄Π½Π°ΠΊΠΎ, Π½Π°ΡΠΈΠ½Π°Ρ Ρ Π²Π΅ΡΡΠΈΠΈ 2.2, ΠΏΠΎΡΠ²ΠΈΠ»ΡΡ Π±Π°Π·ΠΎΠ²ΡΠΉ ΠΊΠ»Π°ΡΡ object, ΠΎΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π»ΠΎΡΡ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ Π²ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ ΠΊΠ»Π°ΡΡΡ. ΠΠ°ΡΠ΅ΠΌ Π΅Π³ΠΎ Π²Π²Π΅Π»ΠΈ β ΡΠ΅ΠΌΠ° Π΄Π»Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΉ ΡΡΠ°ΡΡΠΈ. ΠΠΎΠΆΠ°Π»ΡΠΉ, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠΌ ΡΠ°ΠΊΡΠΎΡΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π·Π²Π°ΡΡ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΌΠ΅ΡΠ°-Π΄Π°Π½Π½ΡΡ . ΠΠ°ΡΠΈΠ½Π°Ρ Ρ Π²Π΅ΡΡΠΈΠΈ 3.0, ΡΡΠ°ΡΡΠ΅ ΠΊΠ»Π°ΡΡΡ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ, Π° Π²ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ ΠΊΠ»Π°ΡΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΡΡ ΠΎΡ ΠΊΠ»Π°ΡΡΠ° object.
ΠΡΠΎ ΠΏΠΎΡΠΎΠ΄ΠΈΠ»ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Β«ΡΠΎΠΌΠ±ΠΎΠ²ΠΈΠ΄Π½ΠΎΠΉ ΡΡΡΡΠΊΡΡΡΡΒ» (Β«diamond diagramΒ»).
ΠΡΠ»ΠΈ Ρ Π½Π°Ρ Π΅ΡΡΡ ΠΊΠ»Π°ΡΡΡ A ΠΈ B, ΠΎΡ ΠΊΠΎΡΠΎΡΡΡ Π½Π°ΡΠ»Π΅Π΄ΡΠ΅ΡΡΡ ΠΊΠ»Π°ΡΡ C, ΡΠΎ ΠΏΡΠΈ ΠΏΠΎΠΈΡΠΊΠ΅ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΏΠΎ ΡΡΠ°ΡΠΎΠΌΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ (C, A, object, B) ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ, ΡΡΠΎ Π΅ΡΠ»ΠΈ ΠΌΠ΅ΡΠΎΠ΄ Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½ Π² ΠΊΠ»Π°ΡΡΠ°Ρ C ΠΈ A ΠΎΠ½ Π±ΡΠ΄Π΅Ρ ΠΈΠ·Π²Π»Π΅ΡΡΠ½ ΠΈΠ· object, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΠΎΠ½ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½ Π² B. ΠΡΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΠ΅ Π½Π΅ΡΠ΄ΠΎΠ±ΡΡΠ²Π°, Ρ.ΠΊ. Π² object ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΌΠ°Π³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΡΠΈΠΏΠ° __init__, __str__ ΠΈ Ρ.ΠΏ. ΠΠΎ Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ object Π·Π°ΠΌΠ΅Π½ΠΈΡΡ Π½Π° Π½Π΅ΠΊΠΈΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΊΠ»Π°ΡΡ D, ΡΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΎΡΡΠ°Π½Π΅ΡΡΡ β ΠΌΠ΅Π½Π΅Π΅ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ°-ΠΏΡΠ΅Π΄ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΡΠ°Π±ΠΎΡΠ°ΡΡ Π²ΠΌΠ΅ΡΡΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΊΠ»Π°ΡΡΠ°-ΠΏΠΎΡΠΎΠΌΠΊΠ°.
ΠΡΠ°ΠΊ, Ρ Π½Π°Ρ Π½Π° ΡΡΠΊΠ°Ρ Π΅ΡΡΡ ΡΠ°ΠΌ ΠΊΠ»Π°ΡΡ, ΡΠΏΠΈΡΠΎΠΊ Π²ΡΠ΅Ρ Π΅Π³ΠΎ ΠΏΡΠ΅Π΄ΠΊΠΎΠ² ΠΈ ΡΠ²ΡΠ·Π΅ΠΉ ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΈΠΌΠΈ. ΠΠ· ΡΡΠΈΡ Π΄Π°Π½Π½ΡΡ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΡΡΡΠΎΠΈΡΡ ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ ΠΊΠ»Π°ΡΡΠΎΠ², Π² ΠΊΠΎΡΠΎΡΡΡ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡΡ ΠΏΠΎΠΈΡΠΊ ΠΌΠ΅ΡΠΎΠ΄Π° ΡΠ»Π΅Π²Π° Π½Π°ΠΏΡΠ°Π²ΠΎ. Π’Π°ΠΊΠΎΠΉ ΡΠΏΠΈΡΠΎΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ Π»ΠΈΠ½Π΅Π°ΡΠΈΠ·Π°ΡΠΈΠ΅ΠΉ ΠΊΠ»Π°ΡΡΠ°. ΠΠ»Ρ ΠΏΡΠΎΡΡΠΎΡΡ Π²ΠΎΠ·ΡΠΌΠ΅ΠΌ ΡΡΡΡΠΊΡΡΡΡ:
Π’ΠΎΠ³Π΄Π° Π»ΠΈΠ½Π΅Π°ΡΠΈΠ·Π°ΡΠΈΠ΅ΠΉ Π΄Π»Ρ ΠΊΠ»Π°ΡΡΠ° 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.
ΠΠ»Π³ΠΎΡΠΈΡΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ° ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² 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] ΠΈ ΠΈΡΠΊΠ»ΡΡΠΈΡΡ Π΄ΡΠ±Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠΎΠ² Π² ΠΈΡΠΎΠ³ΠΎΠ²ΠΎΠΌ ΡΠΏΠΈΡΠΊΠ΅.
ΠΠ°ΠΈΠ±ΠΎΠ»ΡΡΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΠ΅Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΡΠΎΡΠ΅ΡΡ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ, ΡΠ°ΠΊ ΡΡΠΎ ΡΠ°Π·Π±Π΅ΡΡΠΌ Π΅Π³ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ. Π ΡΠ»ΡΡΠ°ΡΡ L[A] ΠΈ L[B] Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ merge(L[object], [object]) = merge([object], [object]) ΡΠ°ΡΠΊΡΡΠ²Π°Π΅ΡΡΡ ΡΡΠΈΠ²ΠΈΠ°Π»ΡΠ½ΠΎ. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΈ ΠΏΠ΅ΡΠ²ΡΠΉ ΠΈ Π²ΡΠΎΡΠΎΠΉ ΡΠΏΠΈΡΠΊΠΈ ΡΠΎΡΡΠΎΡΡ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° object, ΠΏΠΎ ΠΏΡΠ½ΠΊΡΡ 4 ΠΏΡΠ°Π²ΠΈΠ»Π° ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ Π±ΡΠ΄Π΅Ρ [object].
ΠΠ°ΠΏΠΈΡΠ΅ΠΌ Π»ΠΈΠ½Π΅Π°ΡΠΈΠ·Π°ΡΠΈΡ 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 Π²ΡΠ΅Π³Π΄Π° Π±ΡΠ΄Π΅Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡΡ Π² ΠΊΠΎΠ½ΡΠ΅ Π»ΡΠ±ΠΎΠΉ ΡΠ΅ΠΏΠΎΡΠΊΠΈ. Π Π΅ΡΡ. Π― Π½Π΅ ΠΊΡΠ»ΠΈΠ½Π°Ρ ΠΈ Π½Π΅ ΠΌΡΠ·ΡΠΊΠ°Π½Ρ, ΡΠ°ΠΊ ΡΡΠΎ ΠΏΡΠΈΠΌΠ΅ΡΡ β ΡΡΠΎ Π²ΡΠ΅Π³ΠΎ Π»ΠΈΡΡ ΠΏΡΠΈΠΌΠ΅ΡΡ. ΠΠ΅ ΡΡΠΎΠΈΡ Π°ΠΊΡΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ²ΠΎΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠΌΡΡΠ»ΠΎΠ²ΡΡ Π½Π΅ΡΠΎΡΠ½ΠΎΡΡΡΡ Π² Π½ΠΈΡ .
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]
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 Π΄Π»Ρ Π²ΡΠ΅Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΡ ΠΎΠ΄Ρ ΠΏΠΎ ΡΠ΅ΠΏΠΎΡΠΊΠ΅ ΠΏΡΠ΅Π΄ΠΊΠΎΠ² ΡΠΎΡΡΠ°Π²Π»ΡΡΡ ΡΠΏΠΈΡΠΎΠΊ Π²ΡΠ΅Ρ Π°Π»Π»Π΅ΡΠ³Π΅Π½ΠΎΠ² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ², ΡΡΠΎΠ±Ρ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅Π΄ΠΈΡΡ ΠΏΠΎΠΊΡΠΏΠ°ΡΠ΅Π»Π΅ΠΉ. ΠΡΠ΄Π΅Ρ ΡΠ΄ΠΎΠ±Π½ΠΎ Π²ΠΌΠ΅ΡΡΠΎ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΡΠ²Π°ΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· ΡΠΏΠΈΡΠΎΠΊ Β«Π½Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡΒ» Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΄ΡΠΊΡΠ° ΠΏΡΠΎΡΡΠΎ ΡΠ½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ ΠΎΡ ΡΠΎΡΡΠ°Π²Π»ΡΡΡΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ². Π’ΠΎΠ³Π΄Π° ΡΠΏΠΈΡΠΎΠΊ Π±ΡΠ΄Π΅Ρ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°ΡΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ. ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π° Π²ΡΠ±ΠΎΡ Π½Π°ΠΏΠΈΡΠΊΠΈ ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΠΏΡΠΎΠ΄ΡΠΊΡΡ, ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΠΊΡΡΡΠΈΠ²Π°ΡΡ Π²Π΅ΡΠ° ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠ΅Π½ΠΈΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π° ΡΠ°ΠΌΠΎΠΏΠΈΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ-ΡΠ°Π΄ΠΈΠΎΡΡΠ°Π½ΡΠΈΠΈ, ΠΈΠ΄Ρ ΠΎΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ Π³ΡΡΠΏΠΏΡ ΠΊ ΠΆΠ°Π½ΡΠ°ΠΌ Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½ΡΠΎΠΌ Π·Π°ΡΡΡ Π°Π½ΠΈΡ.
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()
ΠΡΡ ΠΎΠ΄Ρ ΠΈΠ· ΡΡΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ°, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ½ΡΡΡ, ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠ»ΡΡ ΡΠΏΠΈΡΠΎΠΊ Π»ΠΈΠ½Π΅Π°ΡΠΈΠ·Π°ΡΠΈΠΈ. ΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΡΠ΅, Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π½Π΅ Π±ΡΠ» Π²ΡΠ·Π²Π°Π½ Π΄Π²Π°ΠΆΠ΄Ρ, ΠΈΠ½Π°ΡΠ΅ Π² ΡΠΏΠΈΡΠΊΠ΅ Π°Π»Π»Π΅ΡΠ³Π΅Π½ΠΎΠ² ΠΈΠ»ΠΈ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΉ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ»ΠΈΡΡ Π±Ρ ΠΏΠΎΠ²ΡΠΎΡΠ΅Π½ΠΈΡ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π² ΡΠ°ΠΌΠΎΠΌ ΡΡΠ°ΡΡΠ΅ΠΌ ΠΊΠ»Π°ΡΡΠ΅ 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 β ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ
Π²ΠΈΠ΄ΠΎΠ² Π»ΠΈΠ½Π΅Π°ΡΠΈΠ·Π°ΡΠΈΠΈ.