Мазмунга өтүү

Сабактын башталышы

Метакласстар жана ABC

Класстардын өздөрү кантип курулуп, кантип иштээрин башкаруу

Негизги идея: Python'до класс ташка чегилген катуу чиймеге эмес, аткаруу учурунда өзүн метакласс деп аталган башка класс түзгөн объектке окшош. Муну түшүнүү класс түзүү процессине кийлигишүүгө мүмкүндүк берет: субкласстарды каттоо, интерфейстерди текшерүү же жүрүм-турумду киргизүү. Абстрактуу базалык класстар (ABC) — бул механизмдин күнүмдүк, жакшы жарык болгон бети: алар милдеттүү методдордун келишимин жарыялоого жана Python'ду ошону аткарууга мажбурлоого мүмкүндүк берет. Көпчүлүк учурда туура курал — ABC же __init_subclass__; кол менен жазылган метакласс — сейрек жана ойлонуп колдонулуучу оор артиллерия.
Аягында сиз буларды жасай аласыз:
  • инстанс -> класс -> метакласс чынжырын жана эмне үчүн type чокуда турарын түшүндүрүү,
  • type(name, bases, namespace) аркылуу классты динамикалуу түзүү,
  • метаклассыз субкласс түзүүнү кармоо үчүн __init_subclass__ колдонуу,
  • abc.ABC жана @abstractmethod аркылуу интерфейсти аныктоо жана камсыздоо,
  • өзүнчө метакласс жазуу жана эң негизгиси, ал качан чындап актаарын баалоо.

1. Класс да объект

Python'догу ар бир маани өз тиби бар объект экенин сиз билесиз: type(3) — int, type("hi") — str. Көпчүлүк иштеп чыгуучулар өткөрүп жиберген кадам — бул класстардын өздөрүнө да тиешелүү. Класс — аткаруу учурундагы объект, жана анын тиби метакласс деп аталат. Демейки боюнча бул метакласс — курулган type.

class Dog:
    pass

fido = Dog()

print(type(fido))   # <class '__main__.Dog'>
print(type(Dog))    # <class 'type'>
print(type(type))   # <class 'type'>  -- type -- өзүнө өзү тип

Ошентип чынжыр бар: инстанс — класстын инстансы, ал эми класс — метакласстын инстансы. Dog өзү объект болгондуктан, аны өзгөрмөгө ыйгарууга, тизмеге коюуга, ага атрибуттарды кошууга жана — негизги түшүнүк — аны class ачкыч сөзү менен эмес, программалык жол менен курууга болот.

Бул сабакты YourAIZone платформасында улантыңыз

Толук сабакта — толук түшүндүрмө, чыгарылган мисалдар, көп кездешкен каталар, заматта текшерилүүчү тесттер жана ЖИ-репетитор. Конок катары дароо баштаңыз же прогрессти сактоо үчүн аккаунт түзүңүз.

Толук сабакта

  • Толук түшүндүрмө
  • Чыгарылган мисалдар
  • Көп кездешкен каталар жана алардан кантип качуу керек
  • Тест суроолору: 15
  • Тема боюнча суроолорго жооп берген ЖИ-репетитор
  • Окуучу, ата-эне жана мугалим үчүн прогрессти көзөмөлдөө