Прескочи на главни садржај
Основе Питхона2026-07-29 · 12 мин читања

Питхон класе и објекти: Водич за 2026

Већина Питхон ООП туторијала подучава синтаксу и прескаче ментални модел. Овај ради супротно — оставићете јасну слику о томе шта је класа * у току извођења, када треба посегнути за @dataclass уместо да ручно пишете __init__ и како self заиста функционише (то није магија).

Покрићемо: минималну одрживу класу у четири реда, зашто је self параметар, атрибуте класе наспрам инстанце (грешка за почетнике број 1), шест дундер метода које ћете видети свуда, @dataclass као модерно подразумевано и чврсто правило када оставити класе на миру и користити обичну функцију.

Ментални модел: класа је фабрика

Класа у Питхон-у је фабрика која производи објекте. Сваки пут када позовете Rect(3, 4), Питхон креира нови објекат са сопственим складиштем и враћа вам га назад.

▶ PYTHONeditable · runs in your browser

То је цео механичар. Класа је нацрт; сваки позив Rect(...) је печат нацрта у свежу РАМ меморију.

self је само параметар

Забуна број 1 за људе који долазе из ЈС-а или Руби-ја: self у Питхон-у је експлицитна. Први параметар сваке методе је референца на инстанцу која се позива.

▶ PYTHONeditable · runs in your browser

Дакле, c.bump() је синтаксички шећер за Counter.bump(c). Питхон прослеђује инстанцу као први арг. Могли бисте то назвати me, this или foo — self је конвенција, а не кључна реч. Држите се self (ПЕП 8) како би други Питхон програмери могли да прочитају ваш код.

Замка атрибута класе и инстанце

Најчешћа Питхон ООП грешка у бази кода за почетнике:

▶ PYTHONeditable · runs in your browser

items = [] у опсегу класе креира ЈЕДНУ листу коју дели свака инстанца. a.add("milk") га мутира, тако да b.items види исту листу.

Правило: иницијализујте променљиво стање у `__init__`, а не у опсегу класе.

▶ PYTHONeditable · runs in your browser

Ова грешка је испоручена у производњу више пута него што ће било који Питхон програмер признати. Пазите на листе, диктате, скупове у обиму класе.

Шест метода које ћете видети свуда

Дундер методе (__name__) су закачице за преоптерећење Питхон оператора. Ових шест покрива 95% онога што ћете наићи:

1. __init__(self, ...) — конструктор

Покреће се када се објекат креира. Овде поставите атрибуте инстанце. Не враћајте ништа (Питхон намеће None).

2. __repr__(self) — стринг окренут програмеру

Позива се помоћу print(x) ако недостаје __str__ и увек од РЕПЛ-а. Циљајте на нешто што бисте могли да залепите назад у Питхон да бисте поново креирали објекат:

▶ PYTHONeditable · runs in your browser

3. __eq__(self, other) — једнакост

Без тога, Rect(3, 4) == Rect(3, 4) враћа False (подразумевано је идентитет). Упоредите поље по поље:

▶ PYTHONeditable · runs in your browser

4. __hash__(self) — хешабилност

Ако заобиђете __eq__, МОРАТЕ такође надјачати __hash__ или Питхон скупове __hash__ = None (објекат постаје нехешљив). Најједноставнији: return hash((self.width, self.height)).

5. __len__(self) — за len(obj)

Чини да len(cart) == 5 ради.

6. __iter__(self) — за for x in obj:

Врати итератор. yield изнутра чини класу итеративном:

▶ PYTHONeditable · runs in your browser

@dataclass — модерно подразумевано

Ако је ваша класа углавном држалац података (три поља, __init__, __repr__, __eq__), престаните да пишете тај шаблон. @dataclass све то генерише из напомена вашег типа:

▶ PYTHONeditable · runs in your browser

То је __init__, __repr__ и __eq__ све генерисано. Додајте @dataclass(frozen=True) да бисте учинили објекат непроменљивим И добили __hash__ бесплатно.

Правило: прво посегните за `@dataclass`. Напишите ручно урађену класу само када су вам потребне методе које нису приступници атрибута.

__slots__ — оптимизација меморије (напредно)

Подразумевано свака инстанца носи __dict__ тако да можете додати произвољне атрибуте. __slots__ замењује тај дикт за фиксну структуру Ц-нивоа — мањи отисак РАМ-а и бржи приступ атрибутима:

▶ PYTHONeditable · runs in your browser

Користите __slots__ када: (а) креирате милионе инстанци и РАМ-а, или (б) желите да ухватите доделу атрибута за време извођења. У супротном га прескочите — подразумевано онемогућава кисели краставчић и разбија вишеструко наслеђе на суптилне начине.

Када оставити часове на миру

Чврсто правило: ако ваша класа има ЈЕДАН метод плус `__init__`, то би вероватно требало да буде функција.

▶ PYTHONeditable · runs in your browser

Класе добијају своју тежину када држе стате у вишеструким позивима метода или када имплементирају добро дефинисан протокол (__iter__, __enter__, __eq__, итд.). Једнократна логика је функција.

Наслеђе — користите га штедљиво

Наслеђе је стварно, али се превише користи. У 2026 Питхон-у, преферирајте композицију — држите други објекат као атрибут уместо да га наслеђујете:

▶ PYTHONeditable · runs in your browser

Наслеђујте само када имате истинску „је-а“ везу И желите да надјачате понашање. NamedRect који наслеђује од Rect да би додао поље name је у реду. Изградња петостепене хијерархије наслеђивања за класу пословне логике је код који ћете распетљати за 6 месеци.


Класе су једна од најмоћнијих функција Питхон-а и једна од најлакших за прекомерну употребу. Ментални модел који помаже: класа је фабрика за објекте, self је обичан параметар, променљиво стање иде у __init__, прво посегните за @dataclass и вратите се на функцију кад год класа има мање од две методе које носе стање.

Следећи корак: 30 практичних ООП лекција које покривају класе, @dataclass, наслеђивање против композиције и методе дундера — са правим Питхон-ом који ради у вашем претраживачу и АИ ментором на сваком кораку.

Јесте ли спремни да пробате?

15 бесплатне лекције након бесплатне пријаве — без картице. Пробајте платформу, а затим одлучите.

Почните бесплатно →

Or unlock every lesson

Pro — $12/mo, unlimited AI, cancel any time. Refund within 14 days worldwide.

See Pro plans →

Get one Python lesson + one career idea every Friday

No spam, no "buy our course now". Three bullets, every Friday. Unsubscribe with one click.