Φόρουμ Εκμάθησης Λογισμικού
Εκμάθηση λογισμικού => Python => νμα ξεκίνησε π: Erdeh στις Μαρ 14, 2026, 10:10
Ο Προγραμματισμός Προσανατολισμένος σε Αντικείμενα (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)- Μοντελοποίηση πραγματικού κόσμου: Μπορείτε να αναπαραστήσετε απευθείας αντικείμενα όπως αυτοκίνητα, άτομα, τραπεζικούς λογαριασμούς στον κώδικα.
- Επαναχρησιμοποίηση κώδικα: Με την κληρονομικότητα (inheritance) μπορείτε να επεκτείνετε υπάρχοντα κώδικα.
- Ευκολία συντήρησης: Αποτρέπει την πολυπλοκότητα κώδικα σε μεγάλα έργα.
- Δημοφιλή πλαίσια: Τα μοντέλα Django, οι επεκτάσεις Flask, τα μοντέλα PyTorch βασίζονται πλήρως σε OOP.
- Πλεονέκτημα καριέρας: Στις αγγελίες εργασίας, η γνώση "OOP principles" ζητείται συχνά.
Η υποστήριξη OOP της Python είναι πολύ ευέλικτη: Τα πάντα είναι αντικείμενα (ακόμα και int, str, list προέρχονται από κλάσεις).Βασικές Έννοιες OOP1. Κλάση (Class) και Αντικείμενο (Object)
Η κλάση είναι ένα πρότυπο/blueprint. Το αντικείμενο είναι μια συγκεκριμένη περίπτωση που δημιουργείται από αυτό το πρότυπο.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: 1502. Περίκλειση (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
pass4. Πολυμορφισμός (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)
Απόκρυψη περιττών λεπτομερειών. Στην Python, με το module abc δημιουργούνται αφηρημένες κλάσεις.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 θα σας παρέχει μεγάλο πλεονέκτημα στα μεγάλα έργα σας.