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

Датакласстар жана аталган кортеждер

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

Датакласстар жана аталган кортеждер

Шаблондук коддун ашыкча жүгүсүз структуралуу жазуулар

Негизги идея: Датакласс — бул кадимки класс, анын кайталанма кызматтык коду — __init__, __repr__, __eq__ жана башкалар — тип аннотацияланган талаалардан сиз үчүн генерацияланат. Аталган кортеж (namedtuple) — бул позициялары да атка ээ болгон өзгөрбөс кортеж. Экөө тең байланышкан бир нече талаанын чакан топтомун так моделдештирүүгө мүмкүндүк берет; андан ары кеп кайсы куралды тандоо жана аны field() менен frozen=True аркылуу башкаруу жөнүндө болот.
Аягында сиз мына мунуларды жасай аласыз:
  • кол менен жазылган __init__/__repr__/__eq__ ордуна @dataclass колдонуу,
  • талааларга демейки маанилерди коопсуз берүү, анын ичинде өзгөрмө маанилерди field(default_factory=...) аркылуу,
  • жазууларды frozen=True менен өзгөрбөс жана хештелүүчү кылуу,
  • айрым талааларды field() аркылуу тууралоо (repr, compare, init, kw_only),
  • датакласс, NamedTuple, кадимки класс жана сөздүктүн ортосунан тапшырмага жараша тандоо.

1. Шаблондук код көйгөйү

Кичине жазуу классын кол менен жазганды сиз мурунтан билесиз. Кыйынчылык — үч талаалуу жазуу да ар бир атты акылга сыярлык куруу, чыгаруу жана салыштыруу үчүн гана үч-төрт жолу кайталоого мажбурлайт.

class Point:
    def __init__(self, x: float, y: float):
        self.x = x
        self.y = y

    def __repr__(self):
        return f"Point(x={self.x}, y={self.y})"

    def __eq__(self, other):
        if not isinstance(other, Point):
            return NotImplemented
        return (self.x, self.y) == (other.x, other.y)

«x жана y» үчүн бул өтө көп расмийлик. __eq__ унутсаңыз, эки бирдей чекит бирдей эмес болуп чыгат; __repr__ унутсаңыз, логдо <Point object at 0x...> көрүнөт. Датакласстар так ушул кызматтык кодду аннотациялардан генерациялайт.

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

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

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

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