π Π‘Π°ΠΌΠΎΡΡΠΈΡΠ΅Π»Ρ ΠΏΠΎ Python Π΄Π»Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΡ . Π§Π°ΡΡΡ 19: ΠΡΠ½ΠΎΠ²Ρ ΠΠΠ β Π°Π±ΡΡΡΠ°ΠΊΡΠΈΡ ΠΈ ΠΏΠΎΠ»ΠΈΠΌΠΎΡΡΠΈΠ·ΠΌ
Π Π°ΡΡΠΊΠ°ΠΆΠ΅ΠΌ, Π΄Π»Ρ ΡΠ΅Π³ΠΎ ΠΏΠΎΠ»ΠΈΠΌΠΎΡΡΠΈΠ·ΠΌ ΠΈ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ, ΠΈ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΡΡΡ Ρ ΠΎΡΡΠ°Π»ΡΠ½ΡΠΌΠΈ ΡΡΠ½Π΄Π°ΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΠΌΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡΠΌΠΈ ΠΠΠ. Π ΠΊΠΎΠ½ΡΠ΅ ΡΡΠ°ΡΡΠΈ β ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ 10 Π·Π°Π΄Π°Ρ, ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠΌΠΈ ΠΈ ΠΏΠΎΠ»ΠΈΠΌΠΎΡΡΠ½ΡΠΌΠΈ ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ.
ΠΠ°ΠΏΠΎΠΌΠ½ΠΈΠΌ, ΡΡΠΎ ΡΡΠ° ΡΡΠ°ΡΡΡ β ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ ΡΠ΅ΠΌΡ ΠΠΠ Π² Python: ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ°Ρ ΡΠ°ΡΡΡ Π±ΡΠ»Π° ΠΏΠΎΡΠ²ΡΡΠ΅Π½Π° ΠΈΠ½ΠΊΠ°ΠΏΡΡΠ»ΡΡΠΈΠΈ ΠΈ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ.
ΠΠ±ΡΡΡΠ°ΠΊΡΠΈΡ
ΠΠ΄Π½Π° ΠΈΠ· ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΡΠ΅Π»Π΅ΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΈ Π² ΠΠΠ β ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΠ΅ Π³ΠΈΠ±ΠΊΠΎΡΡΠΈ ΠΈ ΡΠΏΡΠΎΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ. ΠΠ±ΡΡΡΠ°ΠΊΡΠ½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ ΠΈ ΠΊΠ»Π°ΡΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΈΠ΅ ΠΈ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ΄Π΄Π°ΡΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ.
ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ ΡΠ°Π·Π½ΡΡ ΡΠΈΠΏΠΎΠ². ΠΠ»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ ΡΠ΄ΠΎΠ±Π½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠΉ ΠΊΠ»Π°ΡΡ Shape (ΡΠΈΠ³ΡΡΠ°), ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠΈΠΉ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Ρ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π»ΡΠ±ΠΎΠΉ ΡΠΈΠ³ΡΡΠΎΠΉ. ΠΠ°ΡΠ΅ΠΌ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°ΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠ΅ ΠΊΠ»Π°ΡΡΡ Π΄Π»Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ ΡΠΈΠΏΠΎΠ² ΡΠΈΠ³ΡΡ β ΠΎΠΊΡΡΠΆΠ½ΠΎΡΡΡ, ΠΊΠ²Π°Π΄ΡΠ°Ρ, ΡΡΠ΅ΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ ΠΈ Ρ.Π΄., ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°ΡΡΠΈΡΡΡΡ Π±Π°Π·ΠΎΠ²ΡΠΉ ΠΊΠ»Π°ΡΡ Shape. ΠΡΠΈ ΡΡΠΎΠΌ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ, ΠΈΠ³Π½ΠΎΡΠΈΡΡΡ Π΄Π΅ΡΠ°Π»ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΠΈΠΌΠ΅ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅.
ΠΠ±ΡΡΡΠ°ΠΊΡΠ½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΡΠ΅ΡΠ°ΡΡ ΡΡΠ΄ ΡΠ»ΠΎΠΆΠ½ΡΡ Π·Π°Π΄Π°Ρ:
- ΠΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΠ΄Π΅Π»ΡΡΡ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠ΅ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΠΈΠ³Π½ΠΎΡΠΈΡΡΡ Π²ΡΠ΅ Π½Π΅Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π΄Π΅ΡΠ°Π»ΠΈ.
- ΠΡΠΈΠ½ΡΠΆΠ΄Π°Π΅Ρ ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡΡ ΠΊ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ
ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΈΠ»ΠΈ ΠΊ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ
ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΏΡΡΠ΅ΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΡ
ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΈΠ»ΠΈ ΡΠ²ΠΎΠΉΡΡΠ². Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π°Π±ΡΡΡΠ°ΠΊΡΠΈΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΠΎΠ±ΡΠΈΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ Π΄Π»Ρ ΠΊΠ»Π°ΡΡΠΎΠ², Π½ΠΎ ΠΏΡΠΈ ΡΡΠΎΠΌ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ, ΡΡΠΎ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡ Π±ΡΠ΄Π΅Ρ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²ΡΠ²Π°ΡΡ ΡΠ²ΠΎΡ Π²Π΅ΡΡΠΈΡ ΡΡΠΈΡ
ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΈΠ»ΠΈ ΡΠ²ΠΎΠΉΡΡΠ².
- ΠΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΎΠ±ΡΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ².
- Π£ΠΏΡΠΎΡΠ°Π΅Ρ ΡΠ°Π±ΠΎΡΡ ΡΠΎ ΡΠ»ΠΎΠΆΠ½ΡΠΌΠΈ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΠΊΠ»ΡΡΠ°ΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΡΡΡΠΈΡ
ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ², ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠ°ΡΡΠΈΡΡΠ΅ΠΌΡΠ΅, ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΠ±ΡΡΡΠ°ΠΊΡΠ½ΡΠ΅ ΠΊΠ»Π°ΡΡΡ Π² Python
ΠΠ»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠΌΠΈ ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ Π² Python ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ abc. ΠΠ½ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ:
- abc.ABC β Π±Π°Π·ΠΎΠ²ΡΠΉ ΠΊΠ»Π°ΡΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΡ ΠΊΠ»Π°ΡΡΠΎΠ². ΠΠ±ΡΡΡΠ°ΠΊΡΠ½ΡΠΉ ΠΊΠ»Π°ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ², ΡΠΎ Π΅ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π±Π΅Π· ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ (ΠΏΡΡΡΡΡ , Π±Π΅Π· ΠΊΠΎΠ΄Π°). ΠΡΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π² ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡΠ°Ρ .
- abc.abstractmethod β Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ ΠΌΠ΅ΡΠΎΠ΄ ΡΠ²Π»ΡΠ΅ΡΡΡ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠΌ. ΠΡΠΎΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΊ ΠΌΠ΅ΡΠΎΠ΄Ρ Π²Π½ΡΡΡΠΈ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°. ΠΠ»Π°ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΎΡ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°, Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Π²ΡΠ΅ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΠΈΠ½Π°ΡΠ΅ ΠΎΠ½ ΡΠ°ΠΊΠΆΠ΅ Π±ΡΠ΄Π΅Ρ ΡΡΠΈΡΠ°ΡΡΡΡ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠΌ.
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Ρ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° Book:
from abc import ABC, abstractmethod class Book(ABC): def __init__(self, title, author): self.title = title self.author = author @abstractmethod def get_summary(self): pass class Fiction(Book): def get_summary(self): print(f'"{self.title}" - ΡΠΎΠΌΠ°Π½ Π² ΡΡΠΈΠ»Π΅ ΠΈΡΡΠΎΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠΈΠΊΡΠ½, Π°Π²ΡΠΎΡ - {self.author}') class NonFiction(Book): def get_summary(self): print(f'"{self.title}" - ΠΊΠ½ΠΈΠ³Π° Π² ΡΡΠΈΠ»Π΅ Π½ΠΎΠ½ ΡΠΈΠΊΡΠ½, Π°Π²ΡΠΎΡ - {self.author}') class Poetry(Book): pass
ΠΠ»Π°ΡΡ Book ΠΈΠΌΠ΅Π΅Ρ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ get_summary(). ΠΠ²Π° ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡΠ° Book (Fiction ΠΈ NonFiction) ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ get_summary(), Π° ΡΡΠ΅ΡΠΈΠΉ ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡ Poetry β Π½Π΅Ρ. ΠΠΎΠ³Π΄Π° ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ Fiction ΠΈ NonFiction ΠΈ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄Ρ get_summary(), ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ:
fiction_book = Fiction("Π’Π΅ΡΡΠΎΡ", "ΠΡΠ½ Π‘ΠΈΠΌΠΌΠΎΠ½Ρ") nonfiction_book = NonFiction("ΠΠ°ΠΊ ΠΏΠΈΡΠ°ΡΡ ΠΊΠ½ΠΈΠ³ΠΈ", "Π‘ΡΠΈΠ²Π΅Π½ ΠΠΈΠ½Π³") fiction_book.get_summary() nonfiction_book.get_summary()
ΠΡΠ²ΠΎΠ΄:
"Π’Π΅ΡΡΠΎΡ" - ΡΠΎΠΌΠ°Π½ Π² ΡΡΠΈΠ»Π΅ ΠΈΡΡΠΎΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠΈΠΊΡΠ½, Π°Π²ΡΠΎΡ - ΠΡΠ½ Π‘ΠΈΠΌΠΌΠΎΠ½Ρ "ΠΠ°ΠΊ ΠΏΠΈΡΠ°ΡΡ ΠΊΠ½ΠΈΠ³ΠΈ" - ΠΊΠ½ΠΈΠ³Π° Π² ΡΡΠΈΠ»Π΅ Π½ΠΎΠ½ ΡΠΈΠΊΡΠ½, Π°Π²ΡΠΎΡ - Π‘ΡΠΈΠ²Π΅Π½ ΠΠΈΠ½Π³
Π Π²ΠΎΡ Π²ΡΠ·ΠΎΠ² Poetry ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ ΠΎΡΠΈΠ±ΠΊΠ΅, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π² ΡΡΠΎΠΌ ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄ get_summary() Π½Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½:
poetry_book = Poetry("Π‘ΡΠΈΡ ΠΎΡΠ²ΠΎΡΠ΅Π½ΠΈΡ", "ΠΠΎΡΠΈΡ ΠΠ°ΡΡΠ΅ΡΠ½Π°ΠΊ")
ΠΡΠ²ΠΎΠ΄:
TypeError: Can't instantiate abstract class Poetry with abstract methods get_summary
ΠΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΉ Π²ΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ²ΠΎ ΡΠΎΠ΄ΡΡΠ²Π΅Π½Π½ΡΡ ΠΊΠ»Π°ΡΡΠΎΠ² (Fiction ΠΈ NonFiction Π² Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅) ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ ΠΎΠ±ΡΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ (ΠΌΠ΅ΡΠΎΠ΄ get_summary()), Π½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΡΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ°Π·Π½ΠΎΠΉ. ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΡΠ±Π΅Π΄ΠΈΠ»ΠΈΡΡ, ΡΡΠΎ Π»ΡΠ±ΠΎΠΉ ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡ Book Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄ get_summary(), ΡΡΠΎΠ±Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΡΡ, Π±Π΅Π·ΠΎΡΠΈΠ±ΠΎΡΠ½ΡΡ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
Π’Π΅ΠΏΠ΅ΡΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΠ΅Ρ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠΎΠ²Π°ΡΡ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΡ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡΠΌΠΈ ΠΠΠ. ΠΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠΉ ΠΊΠ»Π°ΡΡ Recipe (ΡΠ΅ΡΠ΅ΠΏΡ), ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΠΌΠ΅Π΅Ρ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ cook(). ΠΠ°ΡΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΡΡΠΈ ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡΠ° Entree, Dessert ΠΈ Appetizer (ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ΅ Π±Π»ΡΠ΄ΠΎ, Π΄Π΅ΡΠ΅ΡΡ ΠΈ Π·Π°ΠΊΡΡΠΊΠ°). Entree ΠΈ Dessert ΠΈΠΌΠ΅ΡΡ ΡΠ²ΠΎΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ cook(), Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ Appetizer ΠΈ PartyMix. PartyMix (ΠΎΡΠ΅ΡΠΊΠΈ, ΡΠΈΠΏΡΡ, ΠΊΡΠ΅ΠΊΠ΅ΡΡ) ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡΠΎΠΌ Appetizer ΠΈ ΠΈΠΌΠ΅Π΅Ρ ΡΠ²ΠΎΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ cook():
from abc import ABC, abstractmethod class Recipe(ABC): @abstractmethod def cook(self): pass class Entree(Recipe): def __init__(self, ingredients): self.ingredients = ingredients def cook(self): print(f"ΠΠΎΡΠΎΠ²ΠΈΠΌ Π½Π° ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠΌ ΠΎΠ³Π½Π΅ ΡΠΌΠ΅ΡΡ ΠΈΠ½Π³ΡΠ΅Π΄ΠΈΠ΅Π½ΡΠΎΠ² ({', '.join(self.ingredients)}) Π΄Π»Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ Π±Π»ΡΠ΄Π°") class Dessert(Recipe): def __init__(self, ingredients): self.ingredients = ingredients def cook(self): print(f"Π‘ΠΌΠ΅ΡΠΈΠ²Π°Π΅ΠΌ {', '.join(self.ingredients)} Π΄Π»Ρ Π΄Π΅ΡΠ΅ΡΡΠ°") class Appetizer(Recipe): pass class PartyMix(Appetizer): def cook(self): print("ΠΠΎΡΠΎΠ²ΠΈΠΌ ΡΠ½Π΅ΠΊΠΈ - Π²ΡΠΊΠ»Π°Π΄ΡΠ²Π°Π΅ΠΌ Π½Π° ΠΏΠΎΠ΄Π½ΠΎΡ ΠΎΡΠ΅ΡΠΊΠΈ, ΡΠΈΠΏΡΡ ΠΈ ΠΊΡΠ΅ΠΊΠ΅ΡΡ")
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π½Π°ΡΡΠ΄Ρ Ρ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠ΅ΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ ΠΏΠΎΠ»ΠΈΠΌΠΎΡΡΠΈΠ·ΠΌΠ° ΠΈ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ.
ΠΠ°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡΡ Entree, Dessert ΠΈ PartyMix Π½Π°ΡΠ»Π΅Π΄ΡΡΡ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ cook() ΠΎΡ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΠΎΠ³ΠΎ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° Recipe. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π²ΡΠ΅ ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡΡ ΡΡ ΠΆΠ΅ ΡΠΈΠ³Π½Π°ΡΡΡΡ (Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ) ΠΌΠ΅ΡΠΎΠ΄Π° cook(), ΡΡΠΎ ΠΈ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ Π² ΠΊΠ»Π°ΡΡΠ΅ Recipe.
ΠΠΎΠ»ΠΈΠΌΠΎΡΡΠΈΠ·ΠΌ ΠΏΡΠΎΡΠ²Π»ΡΠ΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡ ΠΊΠ»Π°ΡΡΠ° Recipe ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ ΠΌΠ΅ΡΠΎΠ΄ cook() ΠΏΠΎ-ΡΠ°Π·Π½ΠΎΠΌΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Entree ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ cook() Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ ΠΏΠΎ ΠΏΡΠΈΠ³ΠΎΡΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ Π±Π»ΡΠ΄Π° Π½Π° ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠΌ ΠΎΠ³Π½Π΅, Π° Dessert ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ cook() Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ ΠΏΠΎ ΡΠΌΠ΅ΡΠΈΠ²Π°Π½ΠΈΡ ΠΈΠ½Π³ΡΠ΅Π΄ΠΈΠ΅Π½ΡΠΎΠ² Π΄Π΅ΡΠ΅ΡΡΠ°. ΠΡΠ° ΡΠ°Π·Π½ΠΈΡΠ° Π² ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΌ ΠΏΠΎΠ»ΠΈΠΌΠΎΡΡΠΈΠ·ΠΌΠ°, ΠΊΠΎΠ³Π΄Π° ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΌΠΎΠ³ΡΡ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡΡΡ ΠΊΠ°ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΡΠ½ΠΎΡΡΡΡΡ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡ ΡΠΈΠΏΡ, Π½ΠΎ ΠΏΡΠΈ ΡΡΠΎΠΌ Π²Π΅Π΄ΡΡ ΡΠ΅Π±Ρ ΠΏΠΎ-ΡΠ°Π·Π½ΠΎΠΌΡ:
entree = Entree(["ΠΊΡΡΠΈΡΠ°", "ΡΠΈΡ", "ΠΎΠ²ΠΎΡΠΈ"]) dessert = Dessert(["ΠΌΠΎΡΠΎΠΆΠ΅Π½ΠΎΠ΅", "ΡΠΎΠΊΠΎΠ»Π°Π΄Π½ΡΠ΅ ΡΠΈΠΏΡΡ", "ΠΌΠ°ΡΠ°ΡΠΊΠΈΠ½ΠΎΠ²ΡΠ΅ Π²ΠΈΡΠ½ΠΈ"]) partymix = PartyMix() entree.cook() dessert.cook() partymix.cook()
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ:
ΠΠΎΡΠΎΠ²ΠΈΠΌ Π½Π° ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠΌ ΠΎΠ³Π½Π΅ ΡΠΌΠ΅ΡΡ ΠΈΠ½Π³ΡΠ΅Π΄ΠΈΠ΅Π½ΡΠΎΠ² (ΠΊΡΡΠΈΡΠ°, ΡΠΈΡ, ΠΎΠ²ΠΎΡΠΈ) Π΄Π»Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ Π±Π»ΡΠ΄Π° Π‘ΠΌΠ΅ΡΠΈΠ²Π°Π΅ΠΌ ΠΌΠΎΡΠΎΠΆΠ΅Π½ΠΎΠ΅, ΡΠΎΠΊΠΎΠ»Π°Π΄Π½ΡΠ΅ ΡΠΈΠΏΡΡ, ΠΌΠ°ΡΠ°ΡΠΊΠΈΠ½ΠΎΠ²ΡΠ΅ Π²ΠΈΡΠ½ΠΈ Π΄Π»Ρ Π΄Π΅ΡΠ΅ΡΡΠ° ΠΠΎΡΠΎΠ²ΠΈΠΌ ΡΠ½Π΅ΠΊΠΈ - Π²ΡΠΊΠ»Π°Π΄ΡΠ²Π°Π΅ΠΌ Π½Π° ΠΏΠΎΠ΄Π½ΠΎΡ ΠΎΡΠ΅ΡΠΊΠΈ, ΡΠΈΠΏΡΡ ΠΈ ΠΊΡΠ΅ΠΊΠ΅ΡΡ
ΠΡΠ·ΠΎΠ² ΠΌΠ΅ΡΠΎΠ΄Π° cook() Π΄Π»Ρ ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡΠ° Appetizer ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠΉ ΠΎΡΠΈΠ±ΠΊΠ΅:
appetizer = Appetizer() appetizer.cook()
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ:
TypeError: Can't instantiate abstract class Appetizer with abstract methods cook
ΠΠΎΠ»ΠΈΠΌΠΎΡΡΠΈΠ·ΠΌ
ΠΠΎΠ»ΠΈΠΌΠΎΡΡΠΈΠ·ΠΌ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ ΡΠ°Π·Π½ΡΡ ΠΊΠ»Π°ΡΡΠΎΠ² ΡΠ°ΠΊ, ΠΊΠ°ΠΊ Π±ΡΠ΄ΡΠΎ ΠΎΠ½ΠΈ ΡΠ²Π»ΡΡΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°. Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΏΠΎΠ»ΠΈΠΌΠΎΡΡΠΈΠ·ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅ΡΠ΅Π· Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅, ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ ΠΈ ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ². ΠΡΠΎΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΈΠΌΠ΅Π΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²Π΅ΡΠΎΠΌΡΡ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²:
- ΠΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΈΠΏΠ° ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ ΠΊΠΎΠ΄ Π±ΠΎΠ»Π΅Π΅ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠΌ ΠΈ ΡΠ΄ΠΎΠ±Π½ΡΠΌ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ.
- Π£ΠΌΠ΅Π½ΡΡΠ°Π΅Ρ Π΄ΡΠ±Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° β ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΎΠ΄Π½Ρ ΡΡΠ½ΠΊΡΠΈΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ².
- ΠΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΠΈΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ ΠΈ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΈ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ ΡΠ°Π·Π½ΡΡ ΡΠΈΠΏΠΎΠ².
- ΠΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ Π³ΠΈΠ±ΠΊΠΎΡΡΡ ΠΈ ΡΠ°ΡΡΠΈΡΡΠ΅ΠΌΠΎΡΡΡ β ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π½ΠΎΠ²ΡΠ΅ ΡΠΈΠΏΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π±Π΅Π· Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄. ΠΡΠΎ Π΄Π°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ Π²ΡΡΡΠ°ΠΈΠ²Π°ΡΡ Π½ΠΎΠ²ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π½Π΅ Π½Π°ΡΡΡΠ°Ρ Π΅Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ.
ΠΠΎΠ»ΠΈΠΌΠΎΡΡΠΈΠ·ΠΌ ΡΠ΅ΡΠ½ΠΎ ΡΠ²ΡΠ·Π°Π½ Ρ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠ΅ΠΉ:
- ΠΠ±ΡΡΡΠ°ΠΊΡΠΈΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΊΡΡΡΡ Π΄Π΅ΡΠ°Π»ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π½ΠΈΠΌ. ΠΡΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΡΠΏΡΠΎΡΡΠΈΡΡ ΠΊΠΎΠ΄, ΡΠ΄Π΅Π»Π°ΡΡ Π΅Π³ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ½ΡΡΠ½ΡΠΌ ΠΈ Π³ΠΈΠ±ΠΊΠΈΠΌ.
- ΠΠΎΠ»ΠΈΠΌΠΎΡΡΠΈΠ·ΠΌ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠ°Π·Π½ΡΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΠΈΠΌΠ΅ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ. ΠΡΠΎΡ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΏΡΠΎΡΠ°Π΅Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΠΈ ΠΠ.
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π°Π±ΡΡΡΠ°ΠΊΡΠΈΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΎΠ±ΡΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ, Π° ΠΏΠΎΠ»ΠΈΠΌΠΎΡΡΠΈΠ·ΠΌ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΠΈΠΌΠ΅ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ.
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΠΎΠ»ΠΈΠΌΠΎΡΡΠΈΠ·ΠΌ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΊΠ»Π°ΡΡΠ° Confectionary (ΠΊΠΎΠ½Π΄ΠΈΡΠ΅ΡΡΠΊΠΈΠ΅ ΠΈΠ·Π΄Π΅Π»ΠΈΡ):
class Confectionary: def __init__(self, name, price): self.name = name self.price = price def describe(self): print(f"{self.name} ΠΏΠΎ ΡΠ΅Π½Π΅ {self.price} ΡΡΠ±/ΠΊΠ³") class Cake(Confectionary): def describe(self): print(f"{self.name} ΡΠΎΡΡ ΡΡΠΎΠΈΡ {self.price} ΡΡΠ±/ΠΊΠ³") class Candy(Confectionary): def describe(self): print(f"{self.name} ΠΊΠΎΠ½ΡΠ΅ΡΡ ΡΡΠΎΠΈΠΌΠΎΡΡΡΡ {self.price} ΡΡΠ±/ΠΊΠ³") class Cookie(Confectionary): pass
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ Π±Π°Π·ΠΎΠ²ΡΠΉ ΠΊΠ»Π°ΡΡ Confectionary, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΠΌΠ΅Π΅Ρ Π°ΡΡΠΈΠ±ΡΡΡ name ΠΈ price, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΌΠ΅ΡΠΎΠ΄ describe(). ΠΠ°ΡΠ΅ΠΌ ΠΌΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ ΡΡΠΈ ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡΠ° ΠΊΠ»Π°ΡΡΠ° Confectionary: Cake, Candy ΠΈ Cookie. Cake ΠΈ Candy ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ describe() ΡΠ²ΠΎΠΈΠΌΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΌΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΠΊΠ»ΡΡΠ°ΡΡ ΡΠΈΠΏ ΠΊΠΎΠ½Π΄ΠΈΡΠ΅ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ·Π΄Π΅Π»ΠΈΡ (ΡΠΎΡΡ ΠΈ ΠΊΠΎΠ½ΡΠ΅ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ), Π° Cookie Π½Π°ΡΠ»Π΅Π΄ΡΠ΅Ρ Π΄Π΅ΡΠΎΠ»ΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ describe() ΠΎΡ Confectionary.
ΠΡΠ»ΠΈ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ ΡΡΠΈΡ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΈ Π²ΡΠ·Π²Π°ΡΡ ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄Ρ describe(), ΠΌΠΎΠΆΠ½ΠΎ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠ΅ΡΠΎΠ΄Π° Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΌ ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡΠ΅:
cake = Cake("ΠΡΠ°ΠΆΡΠΊΠΈΠΉ", 1200) candy = Candy("Π¨ΠΎΠΊΠΎΠ»Π°Π΄Π½ΡΠ΅ Π΄ΠΈΠ½ΠΎΠ·Π°Π²ΡΡ", 560) cookie = Cookie("ΠΠ²ΡΡΠ½ΠΎΠ΅ ΠΏΠ΅ΡΠ΅Π½ΡΠ΅ Ρ ΠΌΠΈΠ½Π΄Π°Π»Π΅ΠΌ", 250) cake.describe() candy.describe() cookie.describe()
ΠΡΠ²ΠΎΠ΄:
ΠΡΠ°ΠΆΡΠΊΠΈΠΉ ΡΠΎΡΡ ΡΡΠΎΠΈΡ 1200 ΡΡΠ±/ΠΊΠ³ Π¨ΠΎΠΊΠΎΠ»Π°Π΄Π½ΡΠ΅ Π΄ΠΈΠ½ΠΎΠ·Π°Π²ΡΡ ΠΊΠΎΠ½ΡΠ΅ΡΡ ΡΡΠΎΠΈΠΌΠΎΡΡΡΡ 560 ΡΡΠ±/ΠΊΠ³ ΠΠ²ΡΡΠ½ΠΎΠ΅ ΠΏΠ΅ΡΠ΅Π½ΡΠ΅ Ρ ΠΌΠΈΠ½Π΄Π°Π»Π΅ΠΌ ΠΏΠΎ ΡΠ΅Π½Π΅ 250 ΡΡΠ±/ΠΊΠ³
Π’Π΅ΠΏΠ΅ΡΡ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΊΠ»Π°ΡΡΠ° Beverage (Π½Π°ΠΏΠΈΡΠΎΠΊ) Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΏΠΎΠ»ΠΈΠΌΠΎΡΡΠΈΠ·ΠΌΠ° Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡΠΌΠΈ ΠΠΠ. Beverage β ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΊΠ»Π°ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ:
- Π°ΡΡΠΈΠ±ΡΡΡ Π½Π°Π·Π²Π°Π½ΠΈΡ, ΠΎΠ±ΡΠ΅ΠΌΠ° ΠΈ ΡΠ΅Π½Ρ;
- ΠΌΠ΅ΡΠΎΠ΄Ρ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΡΡΠΈΡ
Π°ΡΡΠΈΠ±ΡΡΠΎΠ²;
- ΠΌΠ΅ΡΠΎΠ΄ Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ Π½Π°ΠΏΠΈΡΠΊΠ°.
Soda (Π³Π°Π·ΠΈΡΠΎΠ²ΠΊΠ°) β Π΄ΠΎΡΠ΅ΡΠ½ΠΈΠΉ ΠΊΠ»Π°ΡΡ Beverage, Ρ Π½Π΅Π³ΠΎ Π΅ΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ Π°ΡΡΠΈΠ±ΡΡ flavor (Π²ΠΊΡΡ) ΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ describe(), Π²ΠΊΠ»ΡΡΠ°ΡΡΠΈΠΉ flavor. DietSoda β Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ Π΄ΠΎΡΠ΅ΡΠ½ΠΈΠΉ ΠΊΠ»Π°ΡΡ Soda, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°ΡΠ»Π΅Π΄ΡΠ΅Ρ Π²ΡΠ΅ Π°ΡΡΠΈΠ±ΡΡΡ ΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ Soda, Π½ΠΎ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΌΠ΅ΡΠΎΠ΄ describe(), ΡΡΠΎΠ±Ρ ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ Π³Π°Π·ΠΈΡΠΎΠ²ΠΊΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ Π΄ΠΈΠ΅ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ:
class Beverage: def __init__(self, name, size, price): self._name = name self._size = size self._price = price def get_name(self): return self._name def get_size(self): return self._size def get_price(self): return self._price def set_price(self, price): self._price = price def describe(self): return f'{self._size} Π» Π³Π°Π·ΠΈΡΠΎΠ²ΠΊΠΈ "{self._name}" ΡΡΠΎΠΈΡ {self._price} ΡΡΠ±.' class Soda(Beverage): def __init__(self, name, size, price, flavor): super().__init__(name, size, price) self._flavor = flavor def get_flavor(self): return self._flavor def describe(self): return f'{self._size} Π» Π³Π°Π·ΠΈΡΠΎΠ²ΠΊΠΈ "{self._name}" ΡΠΎ Π²ΠΊΡΡΠΎΠΌ "{self._flavor}" ΡΡΠΎΠΈΡ {self._price} ΡΡΠ±.' class DietSoda(Soda): def __init__(self, name, size, price, flavor): super().__init__(name, size, price, flavor) def describe(self): return f'{self._size} Π» Π΄ΠΈΠ΅ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ Π³Π°Π·ΠΈΡΠΎΠ²ΠΊΠΈ "{self._name}" ΡΠΎ Π²ΠΊΡΡΠΎΠΌ "{self._flavor}" ΡΡΠΎΠΈΡ {self._price} ΡΡΠ±.' regular_soda = Soda('Sprite', 0.33, 45, 'Π»ΠΈΠΌΠΎΠ½') print(regular_soda.describe()) diet_soda = DietSoda('Mirinda', 0.33, 50, 'ΠΌΠ°Π½Π΄Π°ΡΠΈΠ½') print(diet_soda.describe()) regular_soda = Soda('ΠΡΡΠ°ΡΠΈΠ½ΠΎ', 1.5, 65, 'Π΄ΡΡΠ΅Ρ') print(regular_soda.describe())
ΠΡΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΠ΅Ρ:
- ΠΠ½ΠΊΠ°ΠΏΡΡΠ»ΡΡΠΈΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π°ΡΡΠΈΠ±ΡΡΡ Π·Π°ΡΠΈΡΠ΅Π½Ρ ΡΠΈΠΌΠ²ΠΎΠ»Π°ΠΌΠΈ ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π½ΠΈΡ ΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π΄ΠΎΡΡΡΠΏΠ½Ρ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΡΠ΅Π· ΠΌΠ΅ΡΠΎΠ΄Ρ getter ΠΈ setter.
- ΠΠ°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Soda ΠΈ DietSoda Π½Π°ΡΠ»Π΅Π΄ΡΡΡ Π°ΡΡΠΈΠ±ΡΡΡ ΠΈ ΠΌΠ΅ΡΠΎΠ΄ ΠΎΡ Beverage.
- ΠΠΎΠ»ΠΈΠΌΠΎΡΡΠΈΠ·ΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΊΠ»Π°ΡΡ ΠΈΠΌΠ΅Π΅Ρ ΡΠ²ΠΎΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ Π²Π΅ΡΡΠΈΡ ΠΌΠ΅ΡΠΎΠ΄Π° describe(), ΠΊΠΎΡΠΎΡΡΠΉ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°.
ΠΡΠ²ΠΎΠ΄:
0.33 Π» Π³Π°Π·ΠΈΡΠΎΠ²ΠΊΠΈ "Sprite" ΡΠΎ Π²ΠΊΡΡΠΎΠΌ "Π»ΠΈΠΌΠΎΠ½" ΡΡΠΎΠΈΡ 45 ΡΡΠ±. 0.33 Π» Π΄ΠΈΠ΅ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ Π³Π°Π·ΠΈΡΠΎΠ²ΠΊΠΈ "Mirinda" ΡΠΎ Π²ΠΊΡΡΠΎΠΌ "ΠΌΠ°Π½Π΄Π°ΡΠΈΠ½" ΡΡΠΎΠΈΡ 50 ΡΡΠ±. 1.5 Π» Π³Π°Π·ΠΈΡΠΎΠ²ΠΊΠΈ "ΠΡΡΠ°ΡΠΈΠ½ΠΎ" ΡΠΎ Π²ΠΊΡΡΠΎΠΌ "Π΄ΡΡΠ΅Ρ" ΡΡΠΎΠΈΡ 65 ΡΡΠ±.
ΠΡΠ°ΠΊΡΠΈΠΊΠ°
ΠΠ°Π΄Π°Π½ΠΈΠ΅ 1
Π Π΄Π°Π»Π΅ΠΊΠΎΠΉ-Π΄Π°Π»Π΅ΠΊΠΎΠΉ Π³Π°Π»Π°ΠΊΡΠΈΠΊΠ΅ Π€Π΅Π΄Π΅ΡΠ°ΡΠΈΡ Π²Π΅Π΄Π΅Ρ ΠΎΠΆΠ΅ΡΡΠΎΡΠ΅Π½Π½ΡΡ Π²ΠΎΠΉΠ½Ρ Ρ ΠΊΠ»ΠΈΠ½Π³ΠΎΠ½Π°ΠΌΠΈ. ΠΠ²Π΅Π·Π΄ΠΎΠ»Π΅ΡΡ Π€Π΅Π΄Π΅ΡΠ°ΡΠΈΠΈ ΠΎΡΠ½Π°ΡΠ΅Π½Ρ ΠΌΠΎΡΠ½ΡΠΌΠΈ ΡΠ°Π·Π΅ΡΠ°ΠΌΠΈ, Π° ΠΊΠ»ΠΈΠ½Π³ΠΎΠ½ΡΠΊΠΈΠ΅ ΠΊΠΎΡΠ°Π±Π»ΠΈ β ΡΠΌΠ΅ΡΡΠΎΠ½ΠΎΡΠ½ΡΠΌΠΈ ΡΠΎΡΠΎΠ½Π½ΡΠΌΠΈ ΡΠΎΡΠΏΠ΅Π΄Π°ΠΌΠΈ. ΠΠ±Π΅ ΡΡΠΎΡΠΎΠ½Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π»ΠΈ ΡΡΠΎΠ²Π΅ΡΡΠ΅Π½ΡΡΠ²ΠΎΠ²Π°Π½Π½ΡΠ΅ Π²Π°ΡΠΏ-Π΄Π²ΠΈΠ³Π°ΡΠ΅Π»ΠΈ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΡΠΎ ΡΠ²Π΅ΡΡ ΡΠ²Π΅ΡΠΎΠ²ΠΎΠΉ ΡΠΊΠΎΡΠΎΡΡΡΡ, ΠΈ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π»ΠΈ ΡΠ²ΠΎΠΈ ΠΊΠΎΡΠ°Π±Π»ΠΈ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ ΡΠ°ΠΌΠΎΡΠ½ΠΈΡΡΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° ΡΠ»ΡΡΠ°ΠΉ ΡΡΠ΅Π·Π²ΡΡΠ°ΠΉΠ½ΠΎΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ.
ΠΠ»Ρ ΠΈΠ³ΡΡ, ΠΏΠΎΡΠ²ΡΡΠ΅Π½Π½ΠΎΠΉ ΡΡΠΎΠΉ Π²ΠΎΠΉΠ½Π΅, Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠΉ ΠΊΠ»Π°ΡΡ Starship Ρ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ warp_speed(), fire_weapon() ΠΈ self_destruct(). ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ Π΄Π²Π° ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡΠ° FederationStarship ΠΈ KlingonWarship, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°ΡΠ»Π΅Π΄ΡΡΡ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ Starship ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡ ΡΠ²ΠΎΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² warp_speed(), fire_weapon() ΠΈ self_destruct().
ΠΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ:
enterprise = FederationStarship() bird_of_prey = KlingonWarship() enterprise.warp_speed() bird_of_prey.warp_speed() enterprise.fire_weapon() bird_of_prey.fire_weapon() enterprise.self_destruct() bird_of_prey.self_destruct()
ΠΡΠ²ΠΎΠ΄:
ΠΠΊΠ»ΡΡΠΈΡΡ Π²Π°ΡΠΏ-Π΄Π²ΠΈΠ³Π°ΡΠ΅Π»ΠΈ! ΠΠΊΠ»ΡΡΠΈΡΡ ΠΌΠ°ΡΠΊΠΈΡΠΎΠ²ΠΎΡΠ½ΠΎΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ! ΠΡΠΏΡΡΡΠΈΡΡ ΡΠΎΡΠΎΠ½Π½ΡΠ΅ ΡΠΎΡΠΏΠ΅Π΄Ρ! Π‘ΡΡΠ΅Π»ΡΡΡ ΠΈΠ· ΡΠ°Π·Π΅ΡΠΎΠ²! ΠΠ°ΠΏΡΡΠΊΠ°Ρ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠ°ΠΌΠΎΡΠ½ΠΈΡΡΠΎΠΆΠ΅Π½ΠΈΡ... ΠΠ°ΠΏΡΡΠΊΠ°Ρ ΠΏΡΠΎΡΠΎΠΊΠΎΠ» ΡΠ°ΠΌΠΎΡΠ½ΠΈΡΡΠΎΠΆΠ΅Π½ΠΈΡ...
Π Π΅ΡΠ΅Π½ΠΈΠ΅:
from abc import ABC, abstractmethod class Starship(ABC): @abstractmethod def warp_speed(self): pass @abstractmethod def fire_weapon(self): pass @abstractmethod def self_destruct(self): pass class FederationStarship(Starship): def warp_speed(self): print("ΠΠΊΠ»ΡΡΠΈΡΡ Π²Π°ΡΠΏ-Π΄Π²ΠΈΠ³Π°ΡΠ΅Π»ΠΈ!") def fire_weapon(self): print("ΠΡΠΏΡΡΡΠΈΡΡ ΡΠΎΡΠΎΠ½Π½ΡΠ΅ ΡΠΎΡΠΏΠ΅Π΄Ρ!") def self_destruct(self): print("ΠΠ°ΠΏΡΡΠΊΠ°Ρ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠ°ΠΌΠΎΡΠ½ΠΈΡΡΠΎΠΆΠ΅Π½ΠΈΡ...") class KlingonWarship(Starship): def warp_speed(self): print("ΠΠΊΠ»ΡΡΠΈΡΡ ΠΌΠ°ΡΠΊΠΈΡΠΎΠ²ΠΎΡΠ½ΠΎΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ!") def fire_weapon(self): print("Π‘ΡΡΠ΅Π»ΡΡΡ ΠΈΠ· ΡΠ°Π·Π΅ΡΠΎΠ²!") def self_destruct(self): print("ΠΠ°ΠΏΡΡΠΊΠ°Ρ ΠΏΡΠΎΡΠΎΠΊΠΎΠ» ΡΠ°ΠΌΠΎΡΠ½ΠΈΡΡΠΎΠΆΠ΅Π½ΠΈΡ...")
ΠΠ°Π΄Π°Π½ΠΈΠ΅ 2
ΠΠ»Ρ ΠΠ ΡΠ΅ΡΡΠΎΡΠ°Π½Π° Π½ΡΠΆΠ½ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ, ΠΏΠΎΠΌΠΎΠ³Π°ΡΡΠΈΠΉ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΡΠΊΡΠΎΠ² ΠΈ ΠΎΠ²ΠΎΡΠ΅ΠΉ Π½Π° ΠΊΡΡ Π½Π΅. Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠΉ ΠΊΠ»Π°ΡΡ Ingredient Ρ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ get_name() ΠΈ get_quantity(). ΠΠ°ΡΠ΅ΠΌ ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π΄Π²Π° ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡΠ° Vegetable ΠΈ Fruit, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°ΡΠ»Π΅Π΄ΡΡΡ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΎΡ Ingredient ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡ ΡΠ²ΠΎΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² get_name() ΠΈ get_quantity().
ΠΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ:
carrot = Vegetable("ΠΠΎΡΠΊΠΎΠ²Ρ", 5) apple = Fruit("Π―Π±Π»ΠΎΠΊΠΈ", 10) print(carrot.get_name()) print(carrot.get_quantity()) print(apple.get_name()) print(apple.get_quantity())
ΠΡΠ²ΠΎΠ΄:
ΠΠΎΡΠΊΠΎΠ²Ρ 5 ΠΊΠ³ Π―Π±Π»ΠΎΠΊΠΈ 10 ΠΊΠ³
Π Π΅ΡΠ΅Π½ΠΈΠ΅:
from abc import ABC, abstractmethod class Ingredient(ABC): @abstractmethod def get_name(self): pass @abstractmethod def get_quantity(self): pass class Vegetable(Ingredient): def __init__(self, name, quantity): self.name = name self.quantity = quantity def get_name(self): return self.name def get_quantity(self): return f'{self.quantity} ΠΊΠ³' class Fruit(Ingredient): def __init__(self, name, quantity): self.name = name self.quantity = quantity def get_name(self): return self.name def get_quantity(self): return f'{self.quantity} ΠΊΠ³'
ΠΠ°Π΄Π°Π½ΠΈΠ΅ 3
ΠΠ»Ρ Π²ΠΎΠ΅Π½Π½ΠΎΠΉ ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°ΡΡ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠΉ ΠΊΠ»Π°ΡΡ Soldier. ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠΎΠ»Π΄Π°Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΌΠ΅ΡΡ Π΄Π²ΠΈΠ³Π°ΡΡΡΡ, Π·Π°ΡΠΈΡΠ°ΡΡΡΡ ΠΈ Π°ΡΠ°ΠΊΠΎΠ²Π°ΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ Soldier ΠΈΠΌΠ΅Π΅Ρ ΡΡΠΈ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΡ ΠΌΠ΅ΡΠΎΠ΄Π°: move(), attack() ΠΈ defend(). ΠΠ²Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ ΠΊΠ»Π°ΡΡΠ°, Infantry (ΠΏΠ΅Ρ ΠΎΡΠ°) ΠΈ Cavalry (ΠΊΠ°Π²Π°Π»Π΅ΡΠΈΡ), Π±ΡΠ΄ΡΡ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²ΡΠ²Π°ΡΡ ΡΡΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ. Π ΠΈΠ³ΡΠ΅ ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΊΠ»Π°ΡΡ Army, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΡΠΎΠ»Π΄Π°Ρ Π² Π°ΡΠΌΠΈΡ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π°ΡΠ°ΠΊΠΈ ΠΈ Π·Π°ΡΠΈΡΡ.
Π§ΡΠΎΠ±Ρ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°ΡΡ, ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ
ΠΊΠ»Π°ΡΡΠ° Soldier, Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ validatesoldier, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ
ΠΏΡΠΎΠ²Π΅ΡΡΡΡ ΡΠΈΠΏ ΠΎΠ±ΡΠ΅ΠΊΡΠ°. ΠΡΠ»ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠΌ ΠΊΠ»Π°ΡΡΠ° Soldier,
Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ Π²ΡΠ΄Π°ΡΡ ΠΎΡΠΈΠ±ΠΊΡ TypeError
. ΠΠ΅ΠΊΠΎΡΠ°ΡΠΎΡ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΠΊ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌ
move(), attack() ΠΈ defend() ΠΊΠ»Π°ΡΡΠΎΠ² Infantry ΠΈ Cavalry.
ΠΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ:
army = Army() army.add_soldier(Infantry()) army.add_soldier(Cavalry()) army.add_soldier(Infantry()) army.add_soldier(Cavalry()) army.attack() army.defend()
ΠΡΠ²ΠΎΠ΄:
ΠΠ΅Ρ ΠΎΡΠ° ΠΏΠ΅ΡΠ΅Π΄Π²ΠΈΠ³Π°Π΅ΡΡΡ Π² ΠΏΠ΅ΡΠ΅ΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΠΠ΅Ρ ΠΎΡΠ° ΡΡΠ°ΡΡΠ²ΡΠ΅Ρ Π² Π±Π»ΠΈΠΆΠ½Π΅ΠΌ Π±ΠΎΡ ΠΠ°Π²Π°Π»Π΅ΡΠΈΡ ΠΏΠ΅ΡΠ΅Π΄Π²ΠΈΠ³Π°Π΅ΡΡΡ Π²Π΅ΡΡ ΠΎΠΌ ΠΠ°Π²Π°Π»Π΅ΡΠΈΡ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡ Π² Π°ΡΠ°ΠΊΡ ΠΠ΅Ρ ΠΎΡΠ° ΠΏΠ΅ΡΠ΅Π΄Π²ΠΈΠ³Π°Π΅ΡΡΡ Π² ΠΏΠ΅ΡΠ΅ΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΠΠ΅Ρ ΠΎΡΠ° ΡΡΠ°ΡΡΠ²ΡΠ΅Ρ Π² Π±Π»ΠΈΠΆΠ½Π΅ΠΌ Π±ΠΎΡ ΠΠ°Π²Π°Π»Π΅ΡΠΈΡ ΠΏΠ΅ΡΠ΅Π΄Π²ΠΈΠ³Π°Π΅ΡΡΡ Π²Π΅ΡΡ ΠΎΠΌ ΠΠ°Π²Π°Π»Π΅ΡΠΈΡ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡ Π² Π°ΡΠ°ΠΊΡ ΠΠ΅Ρ ΠΎΡΠ° ΠΏΠ΅ΡΠ΅Π΄Π²ΠΈΠ³Π°Π΅ΡΡΡ Π² ΠΏΠ΅ΡΠ΅ΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΠΠ΅Ρ ΠΎΡΠ° Π΄Π΅ΡΠΆΠΈΡ ΡΡΡΠΎΠΉ ΠΠ°Π²Π°Π»Π΅ΡΠΈΡ ΠΏΠ΅ΡΠ΅Π΄Π²ΠΈΠ³Π°Π΅ΡΡΡ Π²Π΅ΡΡ ΠΎΠΌ ΠΠ°Π²Π°Π»Π΅ΡΠΈΡ Π·Π°ΡΠΈΡΠ°Π΅Ρ ΡΠ»Π°Π½Π³ΠΈ ΠΠ΅Ρ ΠΎΡΠ° ΠΏΠ΅ΡΠ΅Π΄Π²ΠΈΠ³Π°Π΅ΡΡΡ Π² ΠΏΠ΅ΡΠ΅ΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΠΠ΅Ρ ΠΎΡΠ° Π΄Π΅ΡΠΆΠΈΡ ΡΡΡΠΎΠΉ ΠΠ°Π²Π°Π»Π΅ΡΠΈΡ ΠΏΠ΅ΡΠ΅Π΄Π²ΠΈΠ³Π°Π΅ΡΡΡ Π²Π΅ΡΡ ΠΎΠΌ ΠΠ°Π²Π°Π»Π΅ΡΠΈΡ Π·Π°ΡΠΈΡΠ°Π΅Ρ ΡΠ»Π°Π½Π³ΠΈ
Π Π΅ΡΠ΅Π½ΠΈΠ΅:
from abc import ABC, abstractmethod def validate_soldier(func): def wrapper(self): if not isinstance(self, Soldier): raise TypeError("ΠΠ±ΡΠ΅ΠΊΡ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠΌ Soldier") return func(self) return wrapper class Soldier(ABC): @abstractmethod def move(self): pass @abstractmethod def attack(self): pass @abstractmethod def defend(self): pass class Infantry(Soldier): @validate_soldier def move(self): print("ΠΠ΅Ρ ΠΎΡΠ° ΠΏΠ΅ΡΠ΅Π΄Π²ΠΈΠ³Π°Π΅ΡΡΡ Π² ΠΏΠ΅ΡΠ΅ΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅") @validate_soldier def attack(self): print("ΠΠ΅Ρ ΠΎΡΠ° ΡΡΠ°ΡΡΠ²ΡΠ΅Ρ Π² Π±Π»ΠΈΠΆΠ½Π΅ΠΌ Π±ΠΎΡ") @validate_soldier def defend(self): print("ΠΠ΅Ρ ΠΎΡΠ° Π΄Π΅ΡΠΆΠΈΡ ΡΡΡΠΎΠΉ") class Cavalry(Soldier): @validate_soldier def move(self): print("ΠΠ°Π²Π°Π»Π΅ΡΠΈΡ ΠΏΠ΅ΡΠ΅Π΄Π²ΠΈΠ³Π°Π΅ΡΡΡ Π²Π΅ΡΡ ΠΎΠΌ") @validate_soldier def attack(self): print("ΠΠ°Π²Π°Π»Π΅ΡΠΈΡ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡ Π² Π°ΡΠ°ΠΊΡ") @validate_soldier def defend(self): print("ΠΠ°Π²Π°Π»Π΅ΡΠΈΡ Π·Π°ΡΠΈΡΠ°Π΅Ρ ΡΠ»Π°Π½Π³ΠΈ") class Army: def __init__(self): self.soldiers = [] def add_soldier(self, soldier): self.soldiers.append(soldier) def attack(self): for soldier in self.soldiers: soldier.move() soldier.attack() def defend(self): for soldier in self.soldiers: soldier.move() soldier.defend()
ΠΠ°Π΄Π°Π½ΠΈΠ΅ 4
ΠΠ°Π»Π΅ΠΎΠ½ΡΠΎΠ»ΠΎΠ³Π°ΠΌ, ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΠΌ Π² Π·Π°ΠΏΠΎΠ²Π΅Π΄Π½ΠΈΠΊΠ΅ Π΄Π»Ρ Π΄ΠΈΠ½ΠΎΠ·Π°Π²ΡΠΎΠ², ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΠ»ΠΎΡΡ ΠΠ Π΄Π»Ρ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° ΡΡΠ°Π²ΠΎΡΠ΄Π½ΡΡ ΠΈ ΠΏΠ»ΠΎΡΠΎΡΠ΄Π½ΡΡ ΠΏΠΎΠ΄ΠΎΠΏΠ΅ΡΠ½ΡΡ . ΠΠ°Π½Π½ΡΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ Π½ΡΠΆΠ½ΠΎ ΡΡΠΈΡΡΠ²Π°ΡΡ ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ Π΄ΠΈΠ½ΠΎΠ·Π°Π²ΡΡ β ΠΈΠΌΡ, Π²ΠΈΠ΄, ΡΠΎΡΡ, Π²Π΅Ρ ΠΈ ΡΠ°ΡΠΈΠΎΠ½ ΠΏΠΈΡΠ°Π½ΠΈΡ.
Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠΉ ΠΊΠ»Π°ΡΡ Dinosaur Ρ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ get_personal_name(), get_breed(), get_height(), get_weight() ΠΈ get_diet(). ΠΠ°ΡΠ΅ΠΌ ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π΄Π²Π° ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡΠ° Carnivore (ΠΏΠ»ΠΎΡΠΎΡΠ΄Π½ΡΠΉ) ΠΈ Herbivore (ΡΡΠ°Π²ΠΎΡΠ΄Π½ΡΠΉ), ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°ΡΠ»Π΅Π΄ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ Dinosaur ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡ ΡΠ²ΠΎΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ get_personal_name(), get_breed(), get_height(), get_weight() ΠΈ get_diet(). ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΠΊΠ»Π°ΡΡ DinosaurPark, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΏΠΈΡΠΎΠΊ Π΄ΠΈΠ½ΠΎΠ·Π°Π²ΡΠΎΠ² ΠΈ ΠΈΠΌΠ΅Π΅Ρ ΠΌΠ΅ΡΠΎΠ΄Ρ list_dinosaurs(), list_carnivores() ΠΈ list_herbivores() Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° ΡΠΏΠΈΡΠΊΠΎΠ² a) Π²ΡΠ΅Ρ Π΄ΠΈΠ½ΠΎΠ·Π°Π²ΡΠΎΠ², b) ΠΏΠ»ΠΎΡΠΎΡΠ΄Π½ΡΡ ΠΈ c) ΡΡΠ°Π²ΠΎΡΠ΄Π½ΡΡ ΠΎΡΠΎΠ±Π΅ΠΉ.
ΠΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ:
t_rex = Carnivore('Π’ΠΈΡΠ°Π½Π½ΠΎΠ·Π°Π²Ρ', 'Π Π΅ΠΊΡ', 4800, 560) velociraptor = Carnivore('ΠΠ΅Π»ΠΎΡΠΈΡΠ°ΠΏΡΠΎΡ', 'ΠΡΠ±Π°ΡΡΠΈΠΊ', 30, 70) stegosaurus = Herbivore('Π‘ΡΠ΅Π³ΠΎΠ·Π°Π²Ρ', 'Π‘ΡΠ΅Π³Π³Π°', 7100, 420) triceratops = Herbivore('Π’ΡΠΈΡΠ΅ΡΠ°ΡΠΎΠΏΡ', 'Π’ΡΠΈΠΏΡΠΈ', 8000, 290) park = DinosaurPark() park.add_dinosaur(t_rex) park.add_dinosaur(velociraptor) park.add_dinosaur(stegosaurus) park.add_dinosaur(triceratops) for dinosaur in park.list_dinosaurs(): print(f'ΠΠΌΡ: {dinosaur[0]}\n' f'ΠΠΈΠ΄: {dinosaur[1]}\n' f'ΠΠ΅Ρ: {dinosaur[2]} ΠΊΠ³\n' f'Π ΠΎΡΡ: {dinosaur[3]} ΡΠΌ\n' f'Π Π°ΡΠΈΠΎΠ½: {dinosaur[4]}\n')
ΠΡΠ²ΠΎΠ΄:
ΠΠΌΡ: Π Π΅ΠΊΡ ΠΠΈΠ΄: Π’ΠΈΡΠ°Π½Π½ΠΎΠ·Π°Π²Ρ ΠΠ΅Ρ: 4800 ΠΊΠ³ Π ΠΎΡΡ: 560 ΡΠΌ Π Π°ΡΠΈΠΎΠ½: ΠΠ»ΠΎΡΠΎΡΠ΄Π½ΡΠΉ ΠΠΌΡ: ΠΡΠ±Π°ΡΡΠΈΠΊ ΠΠΈΠ΄: ΠΠ΅Π»ΠΎΡΠΈΡΠ°ΠΏΡΠΎΡ ΠΠ΅Ρ: 30 ΠΊΠ³ Π ΠΎΡΡ: 70 ΡΠΌ Π Π°ΡΠΈΠΎΠ½: ΠΠ»ΠΎΡΠΎΡΠ΄Π½ΡΠΉ ΠΠΌΡ: Π‘ΡΠ΅Π³Π³Π° ΠΠΈΠ΄: Π‘ΡΠ΅Π³ΠΎΠ·Π°Π²Ρ ΠΠ΅Ρ: 7100 ΠΊΠ³ Π ΠΎΡΡ: 420 ΡΠΌ Π Π°ΡΠΈΠΎΠ½: Π’ΡΠ°Π²ΠΎΡΠ΄Π½ΡΠΉ ΠΠΌΡ: Π’ΡΠΈΠΏΡΠΈ ΠΠΈΠ΄: Π’ΡΠΈΡΠ΅ΡΠ°ΡΠΎΠΏΡ ΠΠ΅Ρ: 8000 ΠΊΠ³ Π ΠΎΡΡ: 290 ΡΠΌ Π Π°ΡΠΈΠΎΠ½: Π’ΡΠ°Π²ΠΎΡΠ΄Π½ΡΠΉ
Π Π΅ΡΠ΅Π½ΠΈΠ΅:
from abc import ABC, abstractmethod class Dinosaur(ABC): @abstractmethod def get_personal_name(self): pass @abstractmethod def get_breed(self): pass @abstractmethod def get_height(self): pass @abstractmethod def get_weight(self): pass @abstractmethod def get_diet(self): pass class Carnivore(Dinosaur): def __init__(self, breed, personal_name, height, weight): self.breed = breed self.personal_name = personal_name self.height = height self.weight = weight def get_personal_name(self): return self.personal_name def get_breed(self): return self.breed def get_height(self): return self.height def get_weight(self): return self.weight def get_diet(self): return 'ΠΠ»ΠΎΡΠΎΡΠ΄Π½ΡΠΉ' class Herbivore(Dinosaur): def __init__(self, breed, personal_name, height, weight): self.breed = breed self.personal_name = personal_name self.height = height self.weight = weight def get_personal_name(self): return self.personal_name def get_breed(self): return self.breed def get_height(self): return self.height def get_weight(self): return self.weight def get_diet(self): return 'Π’ΡΠ°Π²ΠΎΡΠ΄Π½ΡΠΉ' class DinosaurPark: def __init__(self): self.dinosaurs = [] def add_dinosaur(self, dinosaur): self.dinosaurs.append(dinosaur) def list_dinosaurs(self): return [(dinosaur.get_personal_name(), dinosaur.get_breed(), dinosaur.get_height(), dinosaur.get_weight(), dinosaur.get_diet()) for dinosaur in self.dinosaurs] def list_carnivores(self): return [(dinosaur.get_personal_name(), dinosaur.get_breed(), dinosaur.get_height(), dinosaur.get_weight()) for dinosaur in self.dinosaurs if isinstance(dinosaur, Carnivore)] def list_herbivores(self): return [(dinosaur.get_personal_name(), dinosaur.get_breed(), dinosaur.get_height(), dinosaur.get_weight()) for dinosaur in self.dinosaurs if isinstance(dinosaur, Herbivore)]
ΠΠ°Π΄Π°Π½ΠΈΠ΅ 5
ΠΠ»Ρ ΡΡΠ΅ΡΠ° ΠΌΡΠ·ΡΠΊΠ°Π»ΡΠ½ΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Π² ΠΎΡΠΊΠ΅ΡΡΡΠ΅ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠΉ ΠΊΠ»Π°ΡΡ Instrument Ρ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ get_name(), get_type(), get_sound() ΠΈ play(). ΠΠ²Π° ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡΠ° StringedInstrument (ΡΡΡΡΠ½Π½ΡΠ΅) ΠΈ PercussionInstrument (ΡΠ΄Π°ΡΠ½ΡΠ΅) Π½Π°ΡΠ»Π΅Π΄ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ Instrument ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡ ΡΠ²ΠΎΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² get_name(), get_type(), get_sound() ΠΈ play(). ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ»Π°ΡΡ Orchestra: ΠΎΠ½ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ Π½ΠΎΠ²ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΠΈ ΠΈΠΌΠ΅Π΅Ρ ΠΌΠ΅ΡΠΎΠ΄Ρ list_instruments(), list_stringed_instruments(), list_percussion_instruments(), ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΠ²ΠΎΠ΄ΡΡ ΡΠΏΠΈΡΠΊΠΈ a) Π²ΡΠ΅Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ², b) ΡΠ΄Π°ΡΠ½ΡΡ , c) ΡΡΡΡΠ½Π½ΡΡ .
ΠΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ:
chello = StringedInstrument("Π²ΠΈΠΎΠ»ΠΎΠ½ΡΠ΅Π»Ρ", "ΡΡΡΡΠ½Π½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ", "Strum") maracas = PercussionInstrument("ΠΌΠ°ΡΠ°ΠΊΠ°ΡΡ", "ΡΠ΄Π°ΡΠ½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ", "Maracas") violin = StringedInstrument("ΡΠΊΡΠΈΠΏΠΊΠ°", "ΡΡΡΡΠ½Π½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ", "Virtuso") drums = PercussionInstrument("Π±Π°ΡΠ°Π±Π°Π½", "ΡΠ΄Π°ΡΠ½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ", "Beat") orchestra = Orchestra() orchestra.add_instrument(chello) orchestra.add_instrument(maracas) orchestra.add_instrument(violin) orchestra.add_instrument(drums) print("Π ΠΎΡΠΊΠ΅ΡΡΡe Π΅ΡΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ:", ', '.join(orchestra.list_instruments())) print("Π‘ΡΡΡΠ½Π½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ:", ', '.join(orchestra.list_stringed_instruments())) print("Π£Π΄Π°ΡΠ½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ:", ', '.join(orchestra.list_percussion_instruments())) print(chello.play()) print(drums.play())
ΠΡΠ²ΠΎΠ΄:
Π ΠΎΡΠΊΠ΅ΡΡΡe Π΅ΡΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ: Π²ΠΈΠΎΠ»ΠΎΠ½ΡΠ΅Π»Ρ, ΠΌΠ°ΡΠ°ΠΊΠ°ΡΡ, ΡΠΊΡΠΈΠΏΠΊΠ°, Π±Π°ΡΠ°Π±Π°Π½ Π‘ΡΡΡΠ½Π½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ: Π²ΠΈΠΎΠ»ΠΎΠ½ΡΠ΅Π»Ρ, ΡΠΊΡΠΈΠΏΠΊΠ° Π£Π΄Π°ΡΠ½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ: ΠΌΠ°ΡΠ°ΠΊΠ°ΡΡ, Π±Π°ΡΠ°Π±Π°Π½ ΠΠ²ΡΡΠΈΡ ΡΡΡΡΠ½Π½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π²ΠΈΠΎΠ»ΠΎΠ½ΡΠ΅Π»Ρ ΠΠ²ΡΡΠΈΡ ΡΠ΄Π°ΡΠ½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π±Π°ΡΠ°Π±Π°Π½
Π Π΅ΡΠ΅Π½ΠΈΠ΅:
from abc import ABC, abstractmethod def print_decorator(func): def wrapper(*args, **kwargs): result = func(*args, **kwargs) return result return wrapper class Instrument(ABC): @abstractmethod def get_name(self): pass @abstractmethod def get_type(self): pass @abstractmethod def get_sound(self): pass @abstractmethod def play(self): pass class StringedInstrument(Instrument): def __init__(self, name, type, sound): self.name = name self.type = type self.sound = sound def get_name(self): return self.name def get_type(self): return self.type def get_sound(self): return self.sound def play(self): return f"ΠΠ²ΡΡΠΈΡ {self.type} {self.name}" class PercussionInstrument(Instrument): def __init__(self, name, type, sound): self.name = name self.type = type self.sound = sound def get_name(self): return self.name def get_type(self): return self.type def get_sound(self): return self.sound def play(self): return f"ΠΠ²ΡΡΠΈΡ {self.type} {self.name}" class Orchestra: def __init__(self): self.instruments = [] def add_instrument(self, instrument): self.instruments.append(instrument) @print_decorator def list_instruments(self): return [instrument.get_name() for instrument in self.instruments] @print_decorator def list_stringed_instruments(self): return [instrument.get_name() for instrument in self.instruments if isinstance(instrument, StringedInstrument)] @print_decorator def list_percussion_instruments(self): return [instrument.get_name() for instrument in self.instruments if isinstance(instrument, PercussionInstrument)]
ΠΠ°Π΄Π°Π½ΠΈΠ΅ 6
ΠΠ°ΠΏΠΈΡΠΈΡΠ΅ ΠΊΠ»Π°ΡΡ FilmCatalogue (ΠΊΠ°ΡΠ°Π»ΠΎΠ³ ΡΠΈΠ»ΡΠΌΠΎΠ²), ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π·Π° Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠΈΠ»ΡΠΌΠΎΡΠ΅ΠΊΠΈ. FilmCatalogue Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠΈΠΏΡ ΠΊΠΈΠ½ΠΎΠΊΠ°ΡΡΠΈΠ½, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΠΌΠΎΠ³Π»ΠΈ ΠΈΡΠΊΠ°ΡΡ ΡΠΈΠ»ΡΠΌΡ ΠΏΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡ ΠΆΠ°Π½ΡΡ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°ΡΡ Π½ΠΎΠ²ΡΠ΅ ΠΊΠ»Π°ΡΡΡ Π΄Π»Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΆΠ°Π½ΡΠΎΠ² (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Horror, Action, Romance), ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°ΡΠ»Π΅Π΄ΡΡΡ ΠΊΠ»Π°ΡΡ Movie ΠΈ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ play() Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΡΠΎΠΌ, ΠΊ ΠΊΠ°ΠΊΠΎΠΌΡ ΠΆΠ°Π½ΡΡ ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΡΠΈΠ»ΡΠΌ.
ΠΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ:
my_catalogue = FilmCatalogue() my_catalogue.add_movie(Drama("ΠΡΠ΅ΡΡΠ½ΡΠΉ ΠΎΡΠ΅Ρ", "Π€ΡΠ΅Π½ΡΠΈΡ Π€. ΠΠΎΠΏΠΏΠΎΠ»Π°")) my_catalogue.add_movie(Comedy("ΠΠΎΡΠ½ΡΠ΅ ΠΈΠ³ΡΡ", "ΠΠΆΠΎΠ½ Π€ΡΡΠ½ΡΠΈΡ ΠΠ΅ΠΉΠ»ΠΈ, ΠΠΆΠΎΠ½Π°ΡΠ°Π½ Π. ΠΠΎΠ»Π΄ΡΡΠ΅ΠΉΠ½")) my_catalogue.add_movie(Horror("ΠΡΠ°ΠΊΡΠ»Π° ΠΡΡΠΌΠ° Π‘ΡΠΎΠΊΠ΅ΡΠ°", "Π€ΡΠ΅Π½ΡΠΈΡ Π€. ΠΠΎΠΏΠΏΠΎΠ»Π°")) my_catalogue.add_movie(Action("ΠΡΡΡΠ΅Π½ΠΈΠ΅", "ΠΠ°Π½-Π€ΡΠ°Π½ΡΡΠ° Π ΠΈΡΠ΅")) my_catalogue.add_movie(Romance("Π§Π΅ΡΡΠ½Π°Ρ ΠΊΡΡΡΠΈΠ·Π°Π½ΠΊΠ°", "ΠΠ°ΡΡΠ°Π»Π» Π₯Π΅ΡΡΠΊΠΎΠ²ΠΈΡ")) my_catalogue.play_all_movies() print(f"\nΠΠ°ΠΉΠ΄Π΅Π½Ρ ΡΠΈΠ»ΡΠΌΡ ΡΠΆΠ°ΡΠΎΠ²:") for movie in my_catalogue.search_movies_by_genre(Horror): print(movie.title) print(f"\nΠΠ°ΠΏΡΡΠΊΠ°Π΅ΠΌ ΡΠΈΠ»ΡΠΌ ΠΈΠ· ΠΆΠ°Π½ΡΠ° 'ΠΠ΅Π»ΠΎΠ΄ΡΠ°ΠΌΡ':") my_catalogue.play_movies_by_genre(Romance)
ΠΡΠ²ΠΎΠ΄:
ΠΠΊΠ»ΡΡΠ°Π΅ΠΌ Π΄ΡΠ°ΠΌΡ 'ΠΡΠ΅ΡΡΠ½ΡΠΉ ΠΎΡΠ΅Ρ' ΡΠ΅ΠΆ. Π€ΡΠ΅Π½ΡΠΈΡ Π€. ΠΠΎΠΏΠΏΠΎΠ»Π°. ΠΠΊΠ»ΡΡΠ°Π΅ΠΌ ΠΊΠΎΠΌΠ΅Π΄ΠΈΡ 'ΠΠΎΡΠ½ΡΠ΅ ΠΈΠ³ΡΡ' ΡΠ΅ΠΆ. ΠΠΆΠΎΠ½ Π€ΡΡΠ½ΡΠΈΡ ΠΠ΅ΠΉΠ»ΠΈ, ΠΠΆΠΎΠ½Π°ΡΠ°Π½ Π. ΠΠΎΠ»Π΄ΡΡΠ΅ΠΉΠ½. ΠΠΊΠ»ΡΡΠ°Π΅ΠΌ ΡΠΈΠ»ΡΠΌ ΡΠΆΠ°ΡΠΎΠ² 'ΠΡΠ°ΠΊΡΠ»Π° ΠΡΡΠΌΠ° Π‘ΡΠΎΠΊΠ΅ΡΠ°' ΡΠ΅ΠΆ. Π€ΡΠ΅Π½ΡΠΈΡ Π€. ΠΠΎΠΏΠΏΠΎΠ»Π°. ΠΠΊΠ»ΡΡΠ°Π΅ΠΌ Π±ΠΎΠ΅Π²ΠΈΠΊ 'ΠΡΡΡΠ΅Π½ΠΈΠ΅' ΡΠ΅ΠΆ. ΠΠ°Π½-Π€ΡΠ°Π½ΡΡΠ° Π ΠΈΡΠ΅. ΠΠΊΠ»ΡΡΠ°Π΅ΠΌ ΠΌΠ΅Π»ΠΎΠ΄ΡΠ°ΠΌΡ 'Π§Π΅ΡΡΠ½Π°Ρ ΠΊΡΡΡΠΈΠ·Π°Π½ΠΊΠ°' ΡΠ΅ΠΆ. ΠΠ°ΡΡΠ°Π»Π» Π₯Π΅ΡΡΠΊΠΎΠ²ΠΈΡ. ΠΠ°ΠΉΠ΄Π΅Π½Ρ ΡΠΈΠ»ΡΠΌΡ ΡΠΆΠ°ΡΠΎΠ²: ΠΡΠ°ΠΊΡΠ»Π° ΠΡΡΠΌΠ° Π‘ΡΠΎΠΊΠ΅ΡΠ° ΠΠ°ΠΏΡΡΠΊΠ°Π΅ΠΌ ΡΠΈΠ»ΡΠΌ ΠΈΠ· ΠΆΠ°Π½ΡΠ° 'ΠΠ΅Π»ΠΎΠ΄ΡΠ°ΠΌΡ': ΠΠΊΠ»ΡΡΠ°Π΅ΠΌ ΠΌΠ΅Π»ΠΎΠ΄ΡΠ°ΠΌΡ 'Π§Π΅ΡΡΠ½Π°Ρ ΠΊΡΡΡΠΈΠ·Π°Π½ΠΊΠ°' ΡΠ΅ΠΆ. ΠΠ°ΡΡΠ°Π»Π» Π₯Π΅ΡΡΠΊΠΎΠ²ΠΈΡ.
Π Π΅ΡΠ΅Π½ΠΈΠ΅:
class Movie: def __init__(self, title, director): self.title = title self.director = director def play(self): print(f"Π‘ΠΎΠ±ΠΈΡΠ°Π΅ΠΌΡΡ ΡΠΌΠΎΡΡΠ΅ΡΡ ΡΠΈΠ»ΡΠΌ '{self.title}' ΡΠ΅ΠΆ. {self.director}.") class Comedy(Movie): def play(self): print(f"ΠΠΊΠ»ΡΡΠ°Π΅ΠΌ ΠΊΠΎΠΌΠ΅Π΄ΠΈΡ '{self.title}' ΡΠ΅ΠΆ. {self.director}.") class Drama(Movie): def play(self): print(f"ΠΠΊΠ»ΡΡΠ°Π΅ΠΌ Π΄ΡΠ°ΠΌΡ '{self.title}' ΡΠ΅ΠΆ. {self.director}.") class Horror(Movie): def play(self): print(f"ΠΠΊΠ»ΡΡΠ°Π΅ΠΌ ΡΠΈΠ»ΡΠΌ ΡΠΆΠ°ΡΠΎΠ² '{self.title}' ΡΠ΅ΠΆ. {self.director}.") class Action(Movie): def play(self): print(f"ΠΠΊΠ»ΡΡΠ°Π΅ΠΌ Π±ΠΎΠ΅Π²ΠΈΠΊ '{self.title}' ΡΠ΅ΠΆ. {self.director}.") class Romance(Movie): def play(self): print(f"ΠΠΊΠ»ΡΡΠ°Π΅ΠΌ ΠΌΠ΅Π»ΠΎΠ΄ΡΠ°ΠΌΡ '{self.title}' ΡΠ΅ΠΆ. {self.director}.") class FilmCatalogue: def __init__(self): self.movies = [] def add_movie(self, movie): self.movies.append(movie) def play_all_movies(self): for movie in self.movies: movie.play() def search_movies_by_genre(self, genre): return [movie for movie in self.movies if isinstance(movie, genre)] def play_movies_by_genre(self, genre): movies = self.search_movies_by_genre(genre) for movie in movies: movie.play()
ΠΠ°Π΄Π°Π½ΠΈΠ΅ 7
ΠΠ»Ρ CRM Π²ΠΈΠ½ΠΎΠ΄Π΅Π»ΡΠ½ΠΈ Π½ΡΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ, ΠΎΡΠ²Π΅ΡΠ°ΡΡΠΈΠΉ Π·Π° ΡΡΠ΅Ρ ΠΊΡΠ°ΡΠ½ΡΡ , Π±Π΅Π»ΡΡ ΠΈ ΡΠΎΠ·ΠΎΠ²ΡΡ Π²ΠΈΠ½, ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΠΈΠΌΠ΅Π΅Ρ ΡΠ²ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅, ΡΠΎΡΡ Π²ΠΈΠ½ΠΎΠ³ΡΠ°Π΄Π°, Π³ΠΎΠ΄ ΠΈ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΡ ΠΏΠΎΠ΄Π°ΡΠΈ. Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π±Π°Π·ΠΎΠ²ΡΠΉ ΠΊΠ»Π°ΡΡ Wine Ρ Π°ΡΡΠΈΠ±ΡΡΠ°ΠΌΠΈ name, grape ΠΈ year. ΠΠ°ΡΠ΅ΠΌ ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΡΠΈ ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡΠ° RedWine, WhiteWine ΠΈ RoseWine, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°ΡΠ»Π΅Π΄ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΈ Π°ΡΡΠΈΠ±ΡΡΡ ΠΎΡ Wine ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡ ΡΠ²ΠΎΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ ΠΌΠ΅ΡΠΎΠ΄Π° serve(). ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΠΊΠ»Π°ΡΡ Winery, ΠΊΠΎΡΠΎΡΡΠΉ Π²Π΅Π΄Π΅Ρ ΡΠΏΠΈΡΠΎΠΊ Π²ΠΈΠ½ ΠΈ ΠΈΠΌΠ΅Π΅Ρ ΠΌΠ΅ΡΠΎΠ΄ serve_wines(), Π²ΡΠ·ΡΠ²Π°ΡΡΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄ serve() Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π²ΠΈΠ½Π°.
ΠΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ:
winery = Winery() winery.add_wine(RedWine("Cabernet Sauvignon", "ΠΠ°Π±Π΅ΡΠ½Π΅ Π‘ΠΎΠ²ΠΈΠ½ΡΠΎΠ½", 2015)) winery.add_wine(WhiteWine("Chardonnay", "Π¨Π°ΡΠ΄ΠΎΠ½Π΅", 2018)) winery.add_wine(RoseWine("Grenache", "ΠΡΠ΅Π½Π°Ρ", 2020)) winery.serve_wines()
ΠΡΠ²ΠΎΠ΄:
ΠΡΠ°ΡΠ½ΠΎΠ΅ Π²ΠΈΠ½ΠΎ 'Cabernet Sauvignon', ΡΠ΄Π΅Π»Π°Π½Π½ΠΎΠ΅ ΠΈΠ· Π²ΠΈΠ½ΠΎΠ³ΡΠ°Π΄Π° ΡΠΎΡΡΠ° ΠΠ°Π±Π΅ΡΠ½Π΅ Π‘ΠΎΠ²ΠΈΠ½ΡΠΎΠ½ Π² 2015 Π³ΠΎΠ΄Ρ, ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌ ΠΏΠΎΠ΄Π°Π²Π°ΡΡ ΠΊΠΎΠΌΠ½Π°ΡΠ½ΠΎΠΉ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΡ. ΠΠ΅Π»ΠΎΠ΅ Π²ΠΈΠ½ΠΎ 'Chardonnay', ΡΠ΄Π΅Π»Π°Π½Π½ΠΎΠ΅ ΠΈΠ· Π²ΠΈΠ½ΠΎΠ³ΡΠ°Π΄Π° ΡΠΎΡΡΠ° Π¨Π°ΡΠ΄ΠΎΠ½Π΅ Π² 2018 Π³ΠΎΠ΄Ρ, ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌ ΠΏΠΎΠ΄Π°Π²Π°ΡΡ Ρ ΠΎΡΠΎΡΠΎ ΠΎΡ Π»Π°ΠΆΠ΄Π΅Π½Π½ΡΠΌ. Π ΠΎΠ·ΠΎΠ²ΠΎΠ΅ Π²ΠΈΠ½ΠΎ 'Grenache', ΡΠ΄Π΅Π»Π°Π½Π½ΠΎΠ΅ ΠΈΠ· Π²ΠΈΠ½ΠΎΠ³ΡΠ°Π΄Π° ΡΠΎΡΡΠ° ΠΡΠ΅Π½Π°Ρ Π² 2020 Π³ΠΎΠ΄Ρ, ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌ ΠΏΠΎΠ΄Π°Π²Π°ΡΡ ΡΠ»Π΅Π³ΠΊΠ° ΠΎΡ Π»Π°ΠΆΠ΄Π΅Π½Π½ΡΠΌ.
Π Π΅ΡΠ΅Π½ΠΈΠ΅:
class Wine: def __init__(self, name, grape, year): self.name = name self.grape = grape self.year = year class RedWine(Wine): def serve(self): print(f"ΠΡΠ°ΡΠ½ΠΎΠ΅ Π²ΠΈΠ½ΠΎ '{self.name}', ΡΠ΄Π΅Π»Π°Π½Π½ΠΎΠ΅ ΠΈΠ· Π²ΠΈΠ½ΠΎΠ³ΡΠ°Π΄Π° ΡΠΎΡΡΠ° {self.grape} Π² {self.year} Π³ΠΎΠ΄Ρ, ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌ ΠΏΠΎΠ΄Π°Π²Π°ΡΡ ΠΊΠΎΠΌΠ½Π°ΡΠ½ΠΎΠΉ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΡ.") class WhiteWine(Wine): def serve(self): print(f"ΠΠ΅Π»ΠΎΠ΅ Π²ΠΈΠ½ΠΎ '{self.name}', ΡΠ΄Π΅Π»Π°Π½Π½ΠΎΠ΅ ΠΈΠ· Π²ΠΈΠ½ΠΎΠ³ΡΠ°Π΄Π° ΡΠΎΡΡΠ° {self.grape} Π² {self.year} Π³ΠΎΠ΄Ρ, ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌ ΠΏΠΎΠ΄Π°Π²Π°ΡΡ Ρ ΠΎΡΠΎΡΠΎ ΠΎΡ Π»Π°ΠΆΠ΄Π΅Π½Π½ΡΠΌ.") class RoseWine(Wine): def serve(self): print(f"Π ΠΎΠ·ΠΎΠ²ΠΎΠ΅ Π²ΠΈΠ½ΠΎ '{self.name}', ΡΠ΄Π΅Π»Π°Π½Π½ΠΎΠ΅ ΠΈΠ· Π²ΠΈΠ½ΠΎΠ³ΡΠ°Π΄Π° ΡΠΎΡΡΠ° {self.grape} Π² {self.year} Π³ΠΎΠ΄Ρ, ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌ ΠΏΠΎΠ΄Π°Π²Π°ΡΡ ΡΠ»Π΅Π³ΠΊΠ° ΠΎΡ Π»Π°ΠΆΠ΄Π΅Π½Π½ΡΠΌ.") class Winery: def __init__(self): self.wines = [] def add_wine(self, wine): self.wines.append(wine) def serve_wines(self): for wine in self.wines: wine.serve()
ΠΠ°Π΄Π°Π½ΠΈΠ΅ 8
ΠΠ»Ρ ΠΠ Π°ΡΡΠΎΠΏΠΎΡΡΠ° Π½ΡΠΆΠ½ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ, ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡΠΈΠΉ ΠΏΠ°ΡΡΠ°ΠΆΠΈΡΡΠΊΠΈΠ΅ ΠΈ Π³ΡΡΠ·ΠΎΠ²ΡΠ΅ ΡΠ°ΠΌΠΎΠ»Π΅ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ ΠΌΠΎΠ΄Π΅Π»ΡΡ, ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΌ, Π²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡΡ ΠΈ Π³ΡΡΠ·ΠΎΠΏΠΎΠ΄ΡΠ΅ΠΌΠ½ΠΎΡΡΡΡ. Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π±Π°Π·ΠΎΠ²ΡΠΉ ΠΊΠ»Π°ΡΡ Aircraft (Π²ΠΎΠ·Π΄ΡΡΠ½ΠΎΠ΅ ΡΡΠ΄Π½ΠΎ) Ρ Π°ΡΡΠΈΠ±ΡΡΠ°ΠΌΠΈ model, manufacturer ΠΈ capacity. ΠΠ°ΡΠ΅ΠΌ ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π΄Π²Π° ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡΠ° PassengerAircraft ΠΈ CargoAircraft, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°ΡΠ»Π΅Π΄ΡΡΡ Π°ΡΡΠΈΠ±ΡΡΡ ΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΎΡ Aircraft ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡ ΡΠ²ΠΎΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ ΠΌΠ΅ΡΠΎΠ΄Π° fly(). Π Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΠΊΠ»Π°ΡΡ Airport, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΏΠΈΡΠΎΠΊ ΡΠ°ΠΌΠΎΠ»Π΅ΡΠΎΠ² ΠΈ ΠΈΠΌΠ΅Π΅Ρ ΠΌΠ΅ΡΠΎΠ΄ takeoff(), Π²ΡΠ·ΡΠ²Π°ΡΡΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄ fly() Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ°ΠΌΠΎΠ»Π΅ΡΠ°.
ΠΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ:
airport = Airport() airport.add_aircraft(PassengerAircraft("Boeing 747", "ΠΠΎΠΈΠ½Π³", 416)) airport.add_aircraft(CargoAircraft("Airbus A330", "ΠΠΉΡΠ±Π°Ρ", 70)) airport.add_aircraft(PassengerAircraft("Boeing 777", "ΠΠΎΠΈΠ½Π³", 396)) airport.takeoff()
ΠΡΠ²ΠΎΠ΄:
ΠΠ°ΡΡΠ°ΠΆΠΈΡΡΠΊΠΈΠΉ ΡΠ°ΠΌΠΎΠ»Π΅Ρ 'Boeing 747' Π²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡΡ 416 ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ, ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½Π½ΡΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ ΠΠΎΠΈΠ½Π³, ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°Π΅ΡΡΡ Π² Π²ΠΎΠ·Π΄ΡΡ Ρ ΠΏΠ°ΡΡΠ°ΠΆΠΈΡΠ°ΠΌΠΈ Π½Π° Π±ΠΎΡΡΡ. ΠΡΡΠ·ΠΎΠ²ΠΎΠΉ ΡΠ°ΠΌΠΎΠ»Π΅Ρ 'Airbus A330' Ρ Π³ΡΡΠ·ΠΎΠΏΠΎΠ΄ΡΠ΅ΠΌΠ½ΠΎΡΡΡΡ 70 Ρ, ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½Π½ΡΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ ΠΠΉΡΠ±Π°Ρ, ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°Π΅ΡΡΡ Π² Π²ΠΎΠ·Π΄ΡΡ Ρ Π³ΡΡΠ·ΠΎΠΌ Π½Π° Π±ΠΎΡΡΡ. ΠΠ°ΡΡΠ°ΠΆΠΈΡΡΠΊΠΈΠΉ ΡΠ°ΠΌΠΎΠ»Π΅Ρ 'Boeing 777' Π²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡΡ 396 ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ, ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½Π½ΡΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ ΠΠΎΠΈΠ½Π³, ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°Π΅ΡΡΡ Π² Π²ΠΎΠ·Π΄ΡΡ Ρ ΠΏΠ°ΡΡΠ°ΠΆΠΈΡΠ°ΠΌΠΈ Π½Π° Π±ΠΎΡΡΡ.
Π Π΅ΡΠ΅Π½ΠΈΠ΅:
class Aircraft: def __init__(self, model, manufacturer, capacity): self.model = model self.manufacturer = manufacturer self.capacity = capacity class PassengerAircraft(Aircraft): def fly(self): print(f"ΠΠ°ΡΡΠ°ΠΆΠΈΡΡΠΊΠΈΠΉ ΡΠ°ΠΌΠΎΠ»Π΅Ρ '{self.model}' Π²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡΡ {self.capacity} ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ, ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½Π½ΡΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ {self.manufacturer}, ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°Π΅ΡΡΡ Π² Π²ΠΎΠ·Π΄ΡΡ Ρ ΠΏΠ°ΡΡΠ°ΠΆΠΈΡΠ°ΠΌΠΈ Π½Π° Π±ΠΎΡΡΡ.") class CargoAircraft(Aircraft): def fly(self): print(f"ΠΡΡΠ·ΠΎΠ²ΠΎΠΉ ΡΠ°ΠΌΠΎΠ»Π΅Ρ '{self.model}' Ρ Π³ΡΡΠ·ΠΎΠΏΠΎΠ΄ΡΠ΅ΠΌΠ½ΠΎΡΡΡΡ {self.capacity} Ρ, ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½Π½ΡΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ {self.manufacturer}, ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°Π΅ΡΡΡ Π² Π²ΠΎΠ·Π΄ΡΡ Ρ Π³ΡΡΠ·ΠΎΠΌ Π½Π° Π±ΠΎΡΡΡ.") class Airport: def __init__(self): self.aircrafts = [] def add_aircraft(self, aircraft): self.aircrafts.append(aircraft) def takeoff(self): for aircraft in self.aircrafts: aircraft.fly()
ΠΠ°Π΄Π°Π½ΠΈΠ΅ 9
ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ, ΠΎΡΠ²Π΅ΡΠ°ΡΡΠΈΠΉ Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ Π΄Π°Π½Π½ΡΡ ΠΎ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π½Π°ΡΡΠΎΠ»ΡΠ½ΡΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠΎΠ² ΠΈ Π½ΠΎΡΡΠ±ΡΠΊΠΎΠ², ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΌΠΎΠ΄Π΅Π»ΡΡ, ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠΌ, ΠΏΠ°ΠΌΡΡΡΡ ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡΡ. Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π±Π°Π·ΠΎΠ²ΡΠΉ ΠΊΠ»Π°ΡΡ Computer Ρ Π°ΡΡΠΈΠ±ΡΡΠ°ΠΌΠΈ model, processor ΠΈ memory. ΠΠ°ΡΠ΅ΠΌ ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π΄Π²Π° ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡΠ° Desktop ΠΈ Laptop, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°ΡΠ»Π΅Π΄ΡΡΡ Π°ΡΡΠΈΠ±ΡΡΡ ΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ Computer ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡ ΡΠ²ΠΎΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ ΠΌΠ΅ΡΠΎΠ΄Π° run(). Π Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΠΊΠ»Π°ΡΡ ComputerStore, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΏΠΈΡΠΎΠΊ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠΎΠ² ΠΈ ΠΈΠΌΠ΅Π΅Ρ ΠΌΠ΅ΡΠΎΠ΄ run_tests(), Π²ΡΠ·ΡΠ²Π°ΡΡΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄ run() Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ°. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΡ Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ².
ΠΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ:
store = ComputerStore() store.add_computer(Desktop("HP Legion", "Intel Core i9-10900K", "64 ΠΠ±")) store.add_computer(Laptop("Dell Xtra", "Intel Core i5 13600K", "32 ΠΠ±")) store.add_computer(Desktop("Lenovo SuperPad", "AMD Ryzen 7 2700X", "16 ΠΠ±")) store.run_tests()
ΠΡΠ²ΠΎΠ΄:
ΠΠ°ΡΠΈΠ½Π°Π΅ΠΌ ΡΠ΅ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ... ΠΠ°ΠΏΡΡΠΊΠ°Π΅ΠΌ Π½Π°ΡΡΠΎΠ»ΡΠ½ΡΠΉ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ 'HP Legion' Ρ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠΌ Intel Core i9-10900K ΠΈ 64 ΠΠ± RAM. Π’Π΅ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π·Π°Π²Π΅ΡΡΠ΅Π½. ΠΠ°ΡΠΈΠ½Π°Π΅ΠΌ ΡΠ΅ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ... ΠΠ°ΠΏΡΡΠΊΠ°Π΅ΠΌ Π½ΠΎΡΡΠ±ΡΠΊ 'Dell Xtra' Ρ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠΌ Intel Core i5 13600K ΠΈ 32 ΠΠ± RAM. Π’Π΅ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π·Π°Π²Π΅ΡΡΠ΅Π½. ΠΠ°ΡΠΈΠ½Π°Π΅ΠΌ ΡΠ΅ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ... ΠΠ°ΠΏΡΡΠΊΠ°Π΅ΠΌ Π½Π°ΡΡΠΎΠ»ΡΠ½ΡΠΉ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ 'Lenovo SuperPad' Ρ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠΌ AMD Ryzen 7 2700X ΠΈ 16 ΠΠ± RAM. Π’Π΅ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π·Π°Π²Π΅ΡΡΠ΅Π½.
Π Π΅ΡΠ΅Π½ΠΈΠ΅:
def performance_test(func): def wrapper(*args, **kwargs): print("ΠΠ°ΡΠΈΠ½Π°Π΅ΠΌ ΡΠ΅ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ...") result = func(*args, **kwargs) print("Π’Π΅ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π·Π°Π²Π΅ΡΡΠ΅Π½.") return result return wrapper class Computer: def __init__(self, model, processor, memory): self.model = model self.processor = processor self.memory = memory @performance_test def run(self): pass class Desktop(Computer): @performance_test def run(self): print(f"ΠΠ°ΠΏΡΡΠΊΠ°Π΅ΠΌ Π½Π°ΡΡΠΎΠ»ΡΠ½ΡΠΉ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ '{self.model}' Ρ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠΌ {self.processor} ΠΈ {self.memory} RAM.") class Laptop(Computer): @performance_test def run(self): print(f"ΠΠ°ΠΏΡΡΠΊΠ°Π΅ΠΌ Π½ΠΎΡΡΠ±ΡΠΊ '{self.model}' Ρ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠΌ {self.processor} ΠΈ {self.memory} RAM.") class ComputerStore: def __init__(self): self.computers = [] def add_computer(self, computer): self.computers.append(computer) def run_tests(self): for computer in self.computers: computer.run()
ΠΠ°Π΄Π°Π½ΠΈΠ΅ 10
ΠΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅ Π±Π°Π·ΠΎΠ²ΡΠΉ ΠΊΠ»Π°ΡΡ Cryptocurrency, ΠΈΠΌΠ΅ΡΡΠΈΠΉ Π°ΡΡΠΈΠ±ΡΡΡ:
- name β Π½Π°Π·Π²Π°Π½ΠΈΠ΅;
- symbol β ΡΠΈΠΌΠ²ΠΎΠ»-ΡΠΈΠΊΠ΅Ρ;
- minable β Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π΄ΠΎΠ±ΡΡΠΈ ΠΌΠ°ΠΉΠ½ΠΈΠ½Π³ΠΎΠΌ;
- rate_to_usd β ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΊΡΡΡ ΠΊ Π΄ΠΎΠ»Π»Π°ΡΡ;
- anonymous β Π½Π°Π»ΠΈΡΠΈΠ΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΡΡ
ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ.
ΠΠ°ΡΠ΅ΠΌ ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΡΠΈ ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡΠ° Nano, Iota ΠΈ Stellar, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°ΡΠ»Π΅Π΄ΡΡΡ Π°ΡΡΠΈΠ±ΡΡΡ ΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° Cryptocurrency, ΠΈ ΠΎΠ±Π»Π°Π΄Π°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΌΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌΠΈ, Π²Π»ΠΈΡΡΡΠΈΠΌΠΈ Π½Π° ΡΠ°Π·ΠΌΠ΅Ρ Π²ΠΎΠ·Π½Π°Π³ΡΠ°ΠΆΠ΄Π΅Π½ΠΈΡ Π·Π° ΠΌΠ°ΠΉΠ½ΠΈΠ½Π³:
- Π°ΡΡΠΈΠ±ΡΡ block_lattice Ρ Nano;
- tangle Ρ Iota.
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π½ΡΠΆΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ:
- ΠΠ΅ΠΊΠΎΡΠ°ΡΠΎΡ minable_required, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ, ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ ΠΌΠ°ΠΉΠ½ΠΈΡΡ ΠΊΡΠΈΠΏΡΠΎΠ²Π°Π»ΡΡΡ ΠΏΠ΅ΡΠ΅Π΄ Π²ΡΠ·ΠΎΠ²ΠΎΠΌ ΠΌΠ΅ΡΠΎΠ΄Π° mining_reward(), ΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅, Π΅ΡΠ»ΠΈ Π΅Π΅ ΠΌΠ°ΠΉΠ½ΠΈΡΡ Π½Π΅Π»ΡΠ·Ρ.
- Π€ΡΠ½ΠΊΡΠΈΡ print_info, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π½Π° Π²Ρ
ΠΎΠ΄ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΊΡΠΈΠΏΡΠΎΠ²Π°Π»ΡΡΡ ΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΌΠΎΠ½Π΅ΡΠ΅, Π²ΠΊΠ»ΡΡΠ°Ρ Π½Π°Π·Π²Π°Π½ΠΈΠ΅, ΡΠΈΠΌΠ²ΠΎΠ», Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π΄ΠΎΠ±ΡΡΠΈ, ΠΊΡΡΡ ΠΊ Π΄ΠΎΠ»Π»Π°ΡΡ Π‘Π¨Π, Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΡΡΡ ΠΈ Π½Π°Π»ΠΈΡΠΈΠ΅ Π±Π»ΠΎΠΊ-ΡΠ΅ΡΠ΅ΡΠΊΠΈ.
ΠΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ:
cryptocurrencies = [Nano(block_lattice=True, rate_to_usd=6, anonymous=False), Iota(tangle=True, rate_to_usd=0.4, anonymous=False), Stellar(distributed=False, rate_to_usd=0.15, anonymous=True)] for crypto in cryptocurrencies: print_info(crypto) if crypto.minable: print(f"ΠΠ°Π³ΡΠ°Π΄Π° Π·Π° ΠΌΠ°ΠΉΠ½ΠΈΠ½Π³: {crypto.mining_reward()} {crypto.symbol}\n")
ΠΡΠ²ΠΎΠ΄:
Nano (NANO): Π΄ΠΎΠ±ΡΠ²Π°ΡΡ ΠΌΠ°ΠΉΠ½ΠΈΠ½Π³ΠΎΠΌ, ΠΊΡΡΡ ΠΊ USD: 6, ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠ΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ, Π±Π»ΠΎΠΊ-ΡΠ΅ΡΠ΅ΡΠΊΠ° ΠΠ°Π³ΡΠ°Π΄Π° Π·Π° ΠΌΠ°ΠΉΠ½ΠΈΠ½Π³: 0.02 NANO Iota (IOTA): Π΄ΠΎΠ±ΡΠ²Π°ΡΡ ΠΌΠ°ΠΉΠ½ΠΈΠ½Π³ΠΎΠΌ, ΠΊΡΡΡ ΠΊ USD: 0.4, ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠ΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ ΠΠ°Π³ΡΠ°Π΄Π° Π·Π° ΠΌΠ°ΠΉΠ½ΠΈΠ½Π³: 0.001 IOTA Stellar (XLM): Π½Π΅ ΠΌΠ°ΠΉΠ½ΠΈΡΡΡ, ΠΊΡΡΡ ΠΊ USD: 0.15, Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΡΠ΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ
Π Π΅ΡΠ΅Π½ΠΈΠ΅:
class Cryptocurrency: def __init__(self, name, symbol, minable=True, rate_to_usd=1, anonymous=False): self.name = name self.symbol = symbol self.minable = minable self.rate_to_usd = rate_to_usd self.anonymous = anonymous def __str__(self): return f"{self.name} ({self.symbol})" def mining_reward(self): return None def minable_required(func): def wrapper(crypto): if not crypto.minable: print("ΠΡΡ ΠΊΡΠΈΠΏΡΠΎΠ²Π°Π»ΡΡΡ Π½Π΅ ΠΌΠ°ΠΉΠ½ΡΡ") return None return func(crypto) return wrapper class Nano(Cryptocurrency): def __init__(self, block_lattice=False, rate_to_usd=5, anonymous=True): super().__init__("Nano", "NANO", True, rate_to_usd, anonymous) self.block_lattice = block_lattice @minable_required def mining_reward(self): return 0.02 if self.block_lattice else 0.01 class Iota(Cryptocurrency): def __init__(self, tangle=False, rate_to_usd=0.3, anonymous=False): super().__init__("Iota", "IOTA", True, rate_to_usd, anonymous) self.tangle = tangle @minable_required def mining_reward(self): return 0.001 if self.tangle else 0.002 class Stellar(Cryptocurrency): def __init__(self, distributed=False, rate_to_usd=0.1, anonymous=True): super().__init__("Stellar", "XLM", False, rate_to_usd, anonymous) self.distributed = distributed def mining_reward(self): print("Stellar is not minable") return None def print_info(crypto): minable_str = 'Π΄ΠΎΠ±ΡΠ²Π°ΡΡ ΠΌΠ°ΠΉΠ½ΠΈΠ½Π³ΠΎΠΌ' if crypto.minable else 'Π½Π΅ ΠΌΠ°ΠΉΠ½ΠΈΡΡΡ' anonymity_str = 'Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΡΠ΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ' if crypto.anonymous else 'ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠ΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ' block_lattice_str = 'Π±Π»ΠΎΠΊ-ΡΠ΅ΡΠ΅ΡΠΊΠ°' if hasattr(crypto, 'block_lattice') and crypto.block_lattice else '' if block_lattice_str: print(f"{crypto}: {minable_str}, ΠΊΡΡΡ ΠΊ USD: {crypto.rate_to_usd}, {anonymity_str}, {block_lattice_str}") else: print(f"{crypto}: {minable_str}, ΠΊΡΡΡ ΠΊ USD: {crypto.rate_to_usd}, {anonymity_str}")
ΠΠΎΠ΄Π²Π΅Π΄Π΅ΠΌ ΠΈΡΠΎΠ³ΠΈ
ΠΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ Π²Π°ΠΆΠ½ΡΠΌΠΈ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π°ΠΌΠΈ, ΡΡΠ΅Π΄ΠΈ ΠΊΠΎΡΠΎΡΡΡ :
- ΠΠΎΠ΄ΡΠ»ΡΠ½ΠΎΡΡΡ β ΠΠΠ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ°Π·Π±ΠΈΠ²Π°ΡΡ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ Π½Π° Π±ΠΎΠ»Π΅Π΅ ΠΌΠ΅Π»ΠΊΠΈΠ΅ ΠΈ ΠΏΡΠΎΡΡΡΠ΅ ΡΠΎΡΡΠ°Π²Π»ΡΡΡΠΈΠ΅.
- ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠ΅ΡΠ΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ β ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡΠ°ΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ΄Π½Π°ΠΆΠ΄Ρ Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΉ ΠΊΠΎΠ΄ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΏΠΎΠ»ΠΈΠΌΠΎΡΡΠΈΠ·ΠΌΠ°.
- ΠΠ½ΠΊΠ°ΠΏΡΡΠ»ΡΡΠΈΡ β ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΡΡΡΡ Π΄Π΅ΡΠ°Π»ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΎΠ΄Π½ΠΈΡ
ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ ΠΎΡ Π΄ΡΡΠ³ΠΈΡ
ΡΠ°ΡΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΡΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΠΊΠΎΠ΄ Π±ΠΎΠ»Π΅Π΅ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ°ΡΡΠΈ Π²Π°ΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π΅ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ»ΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Ρ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ·Π²Π½Π΅.
- ΠΠΈΠ±ΠΊΠΎΡΡΡ β ΠΠΠ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π»Π΅Π³ΠΊΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π½ΠΎΠ²ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠ΅. ΠΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΠΈΠ»ΠΈ ΡΠ΄Π°Π»ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΏΠΎ ΠΌΠ΅ΡΠ΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π½ΠΎΠ²ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°ΡΠ»Π΅Π΄ΡΡΡ Π°ΡΡΠΈΠ±ΡΡΡ ΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ
ΠΊΠ»Π°ΡΡΠΎΠ².
- ΠΡΠΎΡΡΠΎΡΠ° ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΠΈ ΠΎΡΠ»Π°Π΄ΠΊΠΈ. Π Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄ Π½Π° ΡΠΎΡΡΠ°Π²Π»ΡΡΡΠΈΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ ΡΠΏΡΠΎΡΠ°Π΅Ρ ΡΡΡΡΠΊΡΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΠΈΠ·ΠΎΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠΏΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΡ
ΠΈΠΌΠ΅Π½ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π΄Π΅Π»Π°Π΅Ρ ΠΊΠΎΠ΄ Π±ΠΎΠ»Π΅Π΅ ΡΠΈΡΠ°Π±Π΅Π»ΡΠ½ΡΠΌ ΠΈ ΠΏΠΎΠ½ΡΡΠ½ΡΠΌ.
Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΠ°ΡΡΠΈ Π±ΡΠ΄Π΅ΠΌ ΠΈΠ·ΡΡΠ°ΡΡ ΠΎΡΠ½ΠΎΠ²Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ.
Π‘ΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅ ΡΠ°ΠΌΠΎΡΡΠΈΡΠ΅Π»Ρ
- ΠΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ, ΡΡΠ΅ΡΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ, ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ°, ΠΎΠ½Π»Π°ΠΉΠ½ IDE
- ΠΡΠ΅, ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ Π΄Π»Ρ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ Python Ρ Π½ΡΠ»Ρ β ΠΊΠ½ΠΈΠ³ΠΈ, ΡΠ°ΠΉΡΡ, ΠΊΠ°Π½Π°Π»Ρ ΠΈ ΠΊΡΡΡΡ
- Π’ΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ : ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Π±Π°Π·ΠΎΠ²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ
- ΠΠ΅ΡΠΎΠ΄Ρ ΡΠ°Π±ΠΎΡΡ ΡΠΎ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ
- ΠΠ΅ΡΠΎΠ΄Ρ ΡΠ°Π±ΠΎΡΡ ΡΠΎ ΡΠΏΠΈΡΠΊΠ°ΠΌΠΈ ΠΈ ΡΠΏΠΈΡΠΊΠΎΠ²ΡΠΌΠΈ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡΠΌΠΈ
- ΠΠ΅ΡΠΎΠ΄Ρ ΡΠ°Π±ΠΎΡΡ ΡΠΎ ΡΠ»ΠΎΠ²Π°ΡΡΠΌΠΈ ΠΈ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠ°ΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΡΠ΅ΠΉ
- ΠΠ΅ΡΠΎΠ΄Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΊΠΎΡΡΠ΅ΠΆΠ°ΠΌΠΈ
- ΠΠ΅ΡΠΎΠ΄Ρ ΡΠ°Π±ΠΎΡΡ ΡΠΎ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π°ΠΌΠΈ
- ΠΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΡΠΈΠΊΠ»Π° for
- Π£ΡΠ»ΠΎΠ²Π½ΡΠΉ ΡΠΈΠΊΠ» while
- Π€ΡΠ½ΠΊΡΠΈΠΈ Ρ ΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½Π½ΡΠΌΠΈ ΠΈ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠΌΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ
- ΠΠ½ΠΎΠ½ΠΈΠΌΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ
- Π Π΅ΠΊΡΡΡΠΈΠ²Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ
- Π€ΡΠ½ΠΊΡΠΈΠΈ Π²ΡΡΡΠ΅Π³ΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠ°, Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΡ ΠΈ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΡ
- ΠΠ΅ΡΠΎΠ΄Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ
- Π Π΅Π³ΡΠ»ΡΡΠ½ΡΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ
- ΠΡΠ½ΠΎΠ²Ρ ΡΠΊΡΠ°ΠΏΠΈΠ½Π³Π° ΠΈ ΠΏΠ°ΡΡΠΈΠ½Π³Π°
- ΠΡΠ½ΠΎΠ²Ρ ΠΠΠ: ΠΈΠ½ΠΊΠ°ΠΏΡΡΠ»ΡΡΠΈΡ ΠΈ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅
- ΠΡΠ½ΠΎΠ²Ρ ΠΠΠ: Π°Π±ΡΡΡΠ°ΠΊΡΠΈΡ ΠΈ ΠΏΠΎΠ»ΠΈΠΌΠΎΡΡΠΈΠ·ΠΌ
- ΠΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π½Π° Tkinter
- ΠΡΠ½ΠΎΠ²Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΠ³Ρ Π½Π° Pygame
- ΠΡΠ½ΠΎΠ²Ρ ΡΠ°Π±ΠΎΡΡ Ρ SQLite
- ΠΡΠ½ΠΎΠ²Ρ Π²Π΅Π±-ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π½Π° Flask
- ΠΡΠ½ΠΎΠ²Ρ ΡΠ°Π±ΠΎΡΡ Ρ NumPy
- ΠΡΠ½ΠΎΠ²Ρ Π°Π½Π°Π»ΠΈΠ·Π° Π΄Π°Π½Π½ΡΡ
Ρ Pandas