Μετάβαση στο κύριο περιεχόμενο
Βασικά στοιχεία Python2026-07-29 · 12 λεπτά ανάγνωσης

Κλάσεις και αντικείμενα Python: Το σεμινάριο 2026

Τα περισσότερα μαθήματα Python OOP διδάσκουν τη σύνταξη και παραλείπουν το νοητικό μοντέλο. Αυτό κάνει το αντίθετο — θα φύγετε με μια ξεκάθαρη εικόνα του τι είναι μια κλάση * κατά τη διάρκεια εκτέλεσης, πότε πρέπει να προσεγγίσετε το «@dataclass» αντί να γράψετε «__init__» με το χέρι και πώς λειτουργεί πραγματικά το «self» (δεν είναι μαγικό).

Θα καλύψουμε: την ελάχιστη βιώσιμη κλάση τεσσάρων γραμμών, γιατί το "self" είναι παράμετρος, τα χαρακτηριστικά κλάσης έναντι παρουσίας (το σφάλμα #1 αρχαρίου), τις έξι μεθόδους dunder που θα βλέπετε παντού, το "@dataclass" ως η σύγχρονη προεπιλογή και έναν σκληρό κανόνα για το πότε να αφήνετε τις κλάσεις μόνες και να χρησιμοποιείτε μια απλή συνάρτηση.

Το νοητικό μοντέλο: μια τάξη είναι ένα εργοστάσιο

Μια κλάση στην Python είναι ένα εργοστάσιο που παράγει αντικείμενα. Κάθε φορά που καλείτε το «Rect(3, 4)», η Python δημιουργεί ένα νέο αντικείμενο με δικό του αποθηκευτικό χώρο και το παραδίδει πίσω σε εσάς.

▶ PYTHONeditable · runs in your browser

Αυτός είναι ολόκληρος ο μηχανικός. Η τάξη είναι το προσχέδιο. κάθε κλήση «Rect(...)» είναι μια σφραγίδα του σχεδιαγράμματος σε νέα μνήμη RAM.

Το ## «self» είναι απλώς μια παράμετρος

Η #1 σύγχυση για άτομα που προέρχονται από JS ή Ruby: ο «self» στην Python είναι σαφής. Η πρώτη παράμετρος κάθε μεθόδου είναι μια αναφορά στο στιγμιότυπο που καλείται.

▶ PYTHONeditable · runs in your browser

Άρα το "c.bump()" είναι συντακτικό σάκχαρο για το "Counter.bump(c)". Η Python περνά το παράδειγμα ως πρώτο arg. Θα μπορούσατε να το ονομάσετε «εγώ», «αυτό» ή «foo» — το «self» είναι σύμβαση, όχι λέξη-κλειδί. Επιμείνετε στο «self» (PEP 8), ώστε άλλοι προγραμματιστές Python να μπορούν να διαβάσουν τον κώδικά σας.

Η παγίδα χαρακτηριστικού class vs instance

Το πιο συνηθισμένο σφάλμα Python OOP σε μια βάση κώδικα αρχαρίων:

▶ PYTHONeditable · runs in your browser

Το items = [] στο πεδίο της κλάσης δημιουργεί ΜΙΑ λίστα που μοιράζεται κάθε παρουσία. Το "a.add("milk")" το μεταλλάσσεται, επομένως το "b.items" βλέπει την ίδια λίστα.

Κανόνας: αρχικοποίηση μεταβλητής κατάστασης στο `__init__`, όχι στο πεδίο της τάξης.

▶ PYTHONeditable · runs in your browser

Αυτό το σφάλμα αποστέλλεται στην παραγωγή περισσότερες φορές από ό,τι θα παραδεχτεί οποιοσδήποτε προγραμματιστής της Python. Παρακολουθήστε για λίστες, υπαγορεύσεις, σετ στο εύρος της τάξης.

Οι έξι μέθοδοι που θα δείτε παντού

Οι μέθοδοι Dunder (__name__) είναι τα άγκιστρα υπερφόρτωσης του τελεστή της Python. Αυτά τα έξι καλύπτουν το 95% αυτού που θα συναντήσετε:

1. __init__(self, ...) — κατασκευαστής

Εκτελείται όταν δημιουργείται το αντικείμενο. Ορίστε τα χαρακτηριστικά της παρουσίας εδώ. Μην επιστρέψετε τίποτα (η Python επιβάλλει το "Κανένα").

2. __repr__(self) — συμβολοσειρά που βλέπει προγραμματιστές

Καλείται με "print(x)" εάν λείπει το "__str__" και πάντα από το REPL. Στοχεύστε σε κάτι που θα μπορούσατε να επικολλήσετε ξανά στην Python για να αναδημιουργήσετε το αντικείμενο:

▶ PYTHONeditable · runs in your browser

3. «__eq__(εαυτός, άλλος)» — ισότητα

Χωρίς αυτό, το "Rect(3, 4) == Rect(3, 4)" επιστρέφει "False" (η προεπιλογή είναι ταυτότητα). Συγκρίνετε πεδίο προς πεδίο:

▶ PYTHONeditable · runs in your browser

4. «__hash__(self)» — κατακερματισμός

Εάν παρακάμψετε το «__eq__», ΠΡΕΠΕΙ επίσης να παρακάμψετε τα σύνολα «__hash__» ή Python «__hash__ = Κανένα» (το αντικείμενο γίνεται unhashable). Το απλούστερο: `return hash((self.width, self.height))“.

5. «__len__(self)» — για το «len(obj)».

Κάνει το len(cart) == 5 να λειτουργήσει.

6. "__iter__(self)" — για "για x στο obj:"

Επιστρέψτε έναν επαναληπτικό. Η «απόδοση» στο εσωτερικό κάνει την τάξη επαναλαμβανόμενη:

▶ PYTHONeditable · runs in your browser

@dataclass — η σύγχρονη προεπιλογή

Εάν η τάξη σας είναι ως επί το πλείστον κάτοχος δεδομένων (τρία πεδία, ένα __init__, ένα __repr__, ένα __eq__), σταματήστε να γράφετε αυτό το boilerplate. Το @dataclass τα δημιουργεί όλα από τους σχολιασμούς τύπου σας:

▶ PYTHONeditable · runs in your browser

Δημιουργήθηκαν όλα τα "__init__", "__repr__" και "__eq__". Προσθέστε το «@dataclass(frozen=True)» για να κάνετε το αντικείμενο αμετάβλητο ΚΑΙ να αποκτήσετε δωρεάν το «__hash__».

Κανόνας: απευθυνθείτε πρώτα στο «@dataclass». Γράψτε μια κλάση χειρός μόνο όταν χρειάζεστε μεθόδους που δεν είναι πρόσθετα χαρακτηριστικών.

__slots__ — βελτιστοποίηση μνήμης (προχωρημένη)

Από προεπιλογή, κάθε παρουσία φέρει ένα «__dict__», ώστε να μπορείτε να προσθέσετε αυθαίρετα χαρακτηριστικά. Ανταλλαγές «__slots__» που υπαγορεύουν μια σταθερή δομή σε επίπεδο C — μικρότερο αποτύπωμα RAM και ταχύτερη πρόσβαση χαρακτηριστικών:

▶ PYTHONeditable · runs in your browser

Χρησιμοποιήστε το "__slots__" όταν: (α) δημιουργείτε εκατομμύρια παρουσίες και θέματα μνήμης RAM ή (β) θέλετε να καταλάβετε την εκχώρηση χαρακτηριστικών τυπογραφικών σφαλμάτων κατά το χρόνο εκτέλεσης. Διαφορετικά, παραλείψτε το - απενεργοποιεί το pickle από προεπιλογή και διακόπτει την πολλαπλή κληρονομιά με λεπτούς τρόπους.

Πότε να αφήσετε τα μαθήματα μόνοι

Σκληρός κανόνας: αν η τάξη σας έχει ΜΙΑ μέθοδο συν «__init__», θα πρέπει πιθανώς να είναι συνάρτηση.

▶ PYTHONeditable · runs in your browser

Οι κλάσεις κερδίζουν το βάρος τους όταν κρατούν state σε πολλές κλήσεις μεθόδων ή όταν εφαρμόζουν ένα καλά καθορισμένο πρωτόκολλο (__iter__, __enter__, __eq__, κ.λπ.). Η λογική μιας βολής είναι συνάρτηση.

Κληρονομικότητα — χρησιμοποιήστε το με φειδώ

Η κληρονομικότητα είναι πραγματική αλλά υπερβολική χρήση. Στο 2026 Python, προτιμήστε composition — κρατήστε ένα άλλο αντικείμενο ως χαρακτηριστικό αντί να κληρονομήσετε από αυτό:

▶ PYTHONeditable · runs in your browser

Κληρονομήστε μόνο όταν έχετε μια γνήσια σχέση «είναι-α» ΚΑΙ θέλετε να παρακάμψετε τη συμπεριφορά. Ένα "NamedRect" που κληρονομεί από το "Rect" για να προσθέσει ένα πεδίο "όνομα" είναι εντάξει. Η οικοδόμηση μιας ιεραρχίας κληρονομικότητας πέντε επιπέδων για μια κατηγορία επιχειρηματικής λογικής είναι κώδικας που θα ξεμπερδέψετε σε 6 μήνες.


Οι κλάσεις είναι ένα από τα πιο ισχυρά χαρακτηριστικά της Python και ένα από τα πιο εύχρηστα σε υπερβολική χρήση. Το νοητικό μοντέλο που βοηθά: μια κλάση είναι ένα εργοστάσιο για αντικείμενα, το "self" είναι μια απλή παράμετρος, η μεταβλητή κατάσταση πηγαίνει στο "__init__", φτάνει πρώτα στο "@dataclass" και επιστρέφει σε μια συνάρτηση κάθε φορά που η κλάση έχει λιγότερες από δύο μεθόδους μεταφοράς κατάστασης.

Επόμενο βήμα: 30 πρακτικά μαθήματα OOP που καλύπτουν τάξεις, «@dataclass», κληρονομικότητα έναντι σύνθεσης και τις μεθόδους dunder — με πραγματική Python να εκτελείται στο πρόγραμμα περιήγησής σας και έναν μέντορα AI σε κάθε βήμα.

Είστε έτοιμοι να το δοκιμάσετε;

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.