Ο Προγραμματισμός Προσανατολισμένος σε Αντικείμενα (Object-Oriented Programming – OOP) στην Python είναι ένας από τους πιο αποτελεσματικούς τρόπους για να κάνετε τον κώδικα σας πιο οργανωμένο, επαναχρησιμοποιήσιμο και πιο κοντά σε μοντέλα του πραγματικού κόσμου. Η Python, ως υβριδική γλώσσα που υποστηρίζει τόσο τον διαδικαστικό όσο και τον προσανατολισμένο σε αντικείμενα προγραμματισμό, καθιστά την εκμάθηση των εννοιών OOP απαραίτητη για έργα μέσου και προχωρημένου επιπέδου. Από το 2026, τα μεγάλα έργα (όπως Django, Flask, βιβλιοθήκες επιστήμης δεδομένων όπως Pandas, NumPy) και πλαίσια τεχνητής νοημοσύνης (TensorFlow, PyTorch) βασίζονται έντονα σε αρχές OOP.
Στο Google, αναζητήσεις όπως "Python OOP", "Python class", "Python inheritance", "Python polymorphism" έχουν πολύ υψηλό όγκο στην Τουρκία και παγκοσμίως. Ιδιαίτερα υποψήφιοι μηχανικοί λογισμικού, προγραμματιστές backend και επιστήμονες δεδομένων ερευνούν συχνά αυτό το θέμα. Η καλή κατανόηση του OOP σας επιτρέπει να γράφετε καθαρό κώδικα και παρέχει ευκολία συντήρησης σε μεγάλα έργα.
Γιατί Πρέπει να Μάθετε OOP στην Python; (Προοπτική 2026)
Βασικές Έννοιες OOP
Στην Python, για ιδιωτικές ιδιότητες χρησιμοποιείται πρόθεμα _ ή __ (name mangling).
Υποστηρίζεται επίσης πολλαπλή κληρονομικότητα (multiple inheritance):
Ειδικές Μέθοδοι (Magic/Dunder Methods)
Προσθέτουν ειδικές συμπεριφορές σε κλάσεις.
Προχωρημένα Θέματα
• Property Decorator: Για getter/setter.
• Classmethod και Staticmethod:
Συμπέρασμα και Πρακτικές Συμβουλές
Το OOP είναι ένα από τα ισχυρότερα χαρακτηριστικά της Python. Αφού κατανοήσετε τα βασικά, εφαρμόστε τα σε πραγματικά έργα:
• Δημιουργήστε τη δική σας βιβλιοθήκη κλάσεων (π.χ. κλάση Χαρακτήρα για ένα παιχνίδι).
• Εξετάστε τα μοντέλα Django (πρακτική χρήση του OOP).
• Λύστε προβλήματα OOP στο LeetCode.
• Πόροι: Επίσημα έγγραφα Python (τμήμα classes), βιβλίο "Python Crash Course", tutorials OOP του Real Python.
Με αυτόν τον οδηγό, θα έχετε κατανοήσει πλήρως το OOP στην Python. Για εφαρμοσμένα παραδείγματα, αφήστε σχόλιο! Το 2026, το OOP θα σας παρέχει μεγάλο πλεονέκτημα στα μεγάλα έργα σας.
Στο Google, αναζητήσεις όπως "Python OOP", "Python class", "Python inheritance", "Python polymorphism" έχουν πολύ υψηλό όγκο στην Τουρκία και παγκοσμίως. Ιδιαίτερα υποψήφιοι μηχανικοί λογισμικού, προγραμματιστές backend και επιστήμονες δεδομένων ερευνούν συχνά αυτό το θέμα. Η καλή κατανόηση του OOP σας επιτρέπει να γράφετε καθαρό κώδικα και παρέχει ευκολία συντήρησης σε μεγάλα έργα.
Γιατί Πρέπει να Μάθετε OOP στην Python; (Προοπτική 2026)
- Μοντελοποίηση πραγματικού κόσμου: Μπορείτε να αναπαραστήσετε απευθείας αντικείμενα όπως αυτοκίνητα, άτομα, τραπεζικούς λογαριασμούς στον κώδικα.
- Επαναχρησιμοποίηση κώδικα: Με την κληρονομικότητα (inheritance) μπορείτε να επεκτείνετε υπάρχοντα κώδικα.
- Ευκολία συντήρησης: Αποτρέπει την πολυπλοκότητα κώδικα σε μεγάλα έργα.
- Δημοφιλή πλαίσια: Τα μοντέλα Django, οι επεκτάσεις Flask, τα μοντέλα PyTorch βασίζονται πλήρως σε OOP.
- Πλεονέκτημα καριέρας: Στις αγγελίες εργασίας, η γνώση "OOP principles" ζητείται συχνά.
Βασικές Έννοιες OOP
- 1. Κλάση (Class) και Αντικείμενο (Object)
Κώδικα [Επιλογή]
class Araba: # Ορισμός κλάσης
def __init__(self, marka, model, yil): # Κατασκευαστής
self.marka = marka
self.model = model
self.yil = yil
self.km = 0 # Προεπιλεγμένη ιδιότητα
def bilgi_ver(self): # Μέθοδος
return f"{self.yil} {self.marka} {self.model}, KM: {self.km}"
def sur(self, km):
self.km += km
# Δημιουργία αντικειμένων
araba1 = Araba("Toyota", "Corolla", 2020)
araba2 = Araba("BMW", "3 Serisi", 2022)
print(araba1.bilgi_ver()) # 2020 Toyota Corolla, KM: 0
araba1.sur(150)
print(araba1.bilgi_ver()) # 2020 Toyota Corolla, KM: 150- 2. Περίκλειση (Encapsulation)
Στην Python, για ιδιωτικές ιδιότητες χρησιμοποιείται πρόθεμα _ ή __ (name mangling).
Κώδικα [Επιλογή]
class BankaHesabi:
def __init__(self, sahip, bakiye=0):
self.sahip = sahip
self.__bakiye = bakiye # Ιδιωτική
def para_yatir(self, miktar):
self.__bakiye += miktar
print(f" {miktar} € κατατέθηκαν.") # Μεταφρασμένο σε ευρώ για παράδειγμα
def para_cek(self, miktar):
if self.__bakiye >= miktar:
self.__bakiye -= miktar
print(f" {miktar} € αναλήφθηκαν.")
else:
print("Ανεπαρκές υπόλοιπο!")
def bakiye_sorgula(self):
return self.__bakiye
hesap = BankaHesabi("Ahmet", 1000)
hesap.para_yatir(500)
hesap.para_cek(200)
print(hesap.bakiye_sorgula()) # 1300
# print(hesap.__bakiye) # Σφάλμα (μη προσβάσιμο)- 3. Κληρονομικότητα (Inheritance)
Κώδικα [Επιλογή]
class Arac: # Γονική/Βασική κλάση
def __init__(self, marka):
self.marka = marka
def calistir(self):
print(f"{self.marka} λειτουργεί.")
class Araba(Arac): # Παιδική/Παράγωγη κλάση
def __init__(self, marka, model):
super().__init__(marka) # Κλήση κατασκευαστή γονέα
self.model = model
def bilgi(self):
print(f"{self.marka} {self.model}")
class Motosiklet(Arac):
def __init__(self, marka):
super().__init__(marka)
def tekerlek_sayisi(self):
return 2
araba = Araba("Honda", "Civic")
araba.calistir() # Honda λειτουργεί.
araba.bilgi() # Honda CivicΥποστηρίζεται επίσης πολλαπλή κληρονομικότητα (multiple inheritance):
Κώδικα [Επιλογή]
class UcanAraba(Araba, Ucabilir): # Υποθέτουμε ότι υπάρχει κλάση Ucabilir
pass- 4. Πολυμορφισμός (Polymorphism)
Κώδικα [Επιλογή]
class Kopek:
def ses_cikar(self):
print("Γαβ γαβ!")
class Kedi:
def ses_cikar(self):
print("Νιάου!")
def hayvan_ses(hayvan):
hayvan.ses_cikar() # Πολυμορφισμός
hayvanlar = [Kopek(), Kedi()]
for h in hayvanlar:
hayvan_ses(h)
# Έξοδος:
# Γαβ γαβ!
# Νιάου!- 5. Αφαίρεση (Abstraction)
Κώδικα [Επιλογή]
from abc import ABC, abstractmethod
class Sekil(ABC): # Αφηρημένη βασική κλάση
@abstractmethod
def alan(self):
pass
class Dikdortgen(Sekil):
def __init__(self, en, boy):
self.en = en
self.boy = boy
def alan(self):
return self.en * self.boy
# sekil = Sekil() # Σφάλμα: Η αφηρημένη κλάση δεν μπορεί να δημιουργηθεί απευθείας
d = Dikdortgen(5, 10)
print(d.alan()) # 50Ειδικές Μέθοδοι (Magic/Dunder Methods)
Προσθέτουν ειδικές συμπεριφορές σε κλάσεις.
Κώδικα [Επιλογή]
class Kitap:
def __init__(self, baslik, yazar):
self.baslik = baslik
self.yazar = yazar
def __str__(self): # Για print()
return f" {self.baslik} - {self.yazar}"
def __len__(self): # Για len()
return len(self.baslik)
def __add__(self, other): # Για + τελεστή
return f" {self.baslik} και {other.baslik}"
kitap1 = Kitap("1984", "George Orwell")
kitap2 = Kitap("Hayvan Çiftliği", "George Orwell")
print(kitap1) # 1984 - George Orwell
print(len(kitap1)) # 4
print(kitap1 + kitap2) # 1984 και Hayvan ÇiftliğiΠροχωρημένα Θέματα
• Property Decorator: Για getter/setter.
Κώδικα [Επιλογή]
class Personel:
def __init__(self, isim):
self._isim = isim
@property
def isim(self):
return self._isim
@isim.setter
def isim(self, yeni):
if len(yeni) > 0:
self._isim = yeni• Classmethod και Staticmethod:
Κώδικα [Επιλογή]
class Matematik:
@classmethod
def pi(cls):
return 3.14159
@staticmethod
def topla(a, b):
return a + bΣυμπέρασμα και Πρακτικές Συμβουλές
Το OOP είναι ένα από τα ισχυρότερα χαρακτηριστικά της Python. Αφού κατανοήσετε τα βασικά, εφαρμόστε τα σε πραγματικά έργα:
• Δημιουργήστε τη δική σας βιβλιοθήκη κλάσεων (π.χ. κλάση Χαρακτήρα για ένα παιχνίδι).
• Εξετάστε τα μοντέλα Django (πρακτική χρήση του OOP).
• Λύστε προβλήματα OOP στο LeetCode.
• Πόροι: Επίσημα έγγραφα Python (τμήμα classes), βιβλίο "Python Crash Course", tutorials OOP του Real Python.
Με αυτόν τον οδηγό, θα έχετε κατανοήσει πλήρως το OOP στην Python. Για εφαρμοσμένα παραδείγματα, αφήστε σχόλιο! Το 2026, το OOP θα σας παρέχει μεγάλο πλεονέκτημα στα μεγάλα έργα σας.

