# Πώς να δημιουργήσετε κλάσεις και αντικείμενα Python

Οι κλάσεις Python είναι σαν **σχέδια κατασκευής ή πρότυπα**. Μπορείτε να τις χρησιμοποιήσετε για να γράψετε επαναχρησιμοποιήσιμο κώδικα με τη μορφή χαρακτηριστικών και μεθόδων κλάσης.

## Τι είναι οι κλάσεις Python;

Μια κλάση είναι μια **αφηρημένη έννοια** που περιγράφει τα χαρακτηριστικά και τις μεθόδους των αντικειμένων. Μια κλάση Python λειτουργεί ως πρότυπο για τη δημιουργία συγκεκριμένων αντικειμένων, τα οποία είναι περιπτώσεις της κλάσης. Για παράδειγμα, μια κλάση `Car` θα μπορούσε να ορίσει χαρακτηριστικά όπως το χρώμα και τη μάρκα, μαζί με μεθόδους όπως `__drive__` ή `__brake__`.

Ενώ κάθε αντικείμενο μιας κλάσης μπορεί να έχει μοναδικές τιμές χαρακτηριστικών, τα αντικείμενα της ίδιας κλάσης **μοιράζονται μεθόδους και βασικό πλαίσιο συμπεριφοράς με άλλες παρουσίες** στην κλάση. Για παράδειγμα, το αντικείμενο `my_car` της κλάσης `Car` μπορεί να δημιουργηθεί με το χρώμα `__red__` και τη μάρκα `__Toyota__`, αλλά οι μέθοδοι `__drive__` και `__brake__` θα μεταφερθούν αυτόματα στην παρουσία.

## Πώς να δημιουργήσετε κλάσεις Python

Στην Python, ορίζετε τις κλάσεις χρησιμοποιώντας τη λέξη-κλειδί `class`.

```python
class MyClass:
    # Constructor method called when creating an object
    def __init__(self, attribute1, attribute2):
        self.attribute1 = attribute1
        self.attribute2 = attribute2
    
    # Method defined within the class
    def my_method(self):
        return f"Attribute 1: {self.attribute1}, Attribute 2: {self.attribute2}"
```

Ο παραπάνω κώδικας ορίζει μια κλάση με το όνομα `MyClass`. Έχει έναν **κατασκευαστή** `__init__`, ο οποίος καλείται κατά τη δημιουργία του αντικειμένου, αρχικοποιώντας δύο χαρακτηριστικά: `attribute1` και `attribute2`. Η μέθοδος `my_method` επιστρέφει μια μορφοποιημένη συμβολοσειρά που περιέχει τις τιμές αυτών των χαρακτηριστικών.

Για να δημιουργήσετε ένα αντικείμενο από αυτήν την κλάση, χρησιμοποιήστε το όνομα της κλάσης ακολουθούμενο από αγκύλες:

```python
object1 = MyClass("Value 1", "Value 2")
# Calling a method of the object
result = object1.my_method()
```

## Παραδείγματα χρήσης των κλάσεων Python

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

### `__str()__` λειτουργία

Η συνάρτηση `__str__()` στη Python είναι μια ειδική μέθοδος που μπορείτε να ορίσετε μέσα στις κλάσεις της Python. Όταν υλοποιείται, επιστρέφει μια συμβολοσειρά που αντιπροσωπεύει μια **φιλική προς τον χρήστη αναπαράσταση ενός αντικειμένου**. Μπορείτε να χρησιμοποιήσετε τη συνάρτηση `str()` απευθείας σε ένα αντικείμενο ή να τη συνδυάσετε με μια δήλωση `print()`.

```python
class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age
    
    def __str__(self):
        return f"Name: {self.name}, Age: {self.age}"
person1 = Person("Alice", 30)
print(person1) # Output: Name: Alice, Age: 30
```

Στον παραπάνω κώδικα, η μέθοδος `__str__()` μέσα στην κλάση `Person` δημιουργεί μια **μορφοποιημένη συμβολοσειρά** που εμφανίζει το όνομα και την ηλικία ενός ατόμου. Όταν εκτελείται `print(person1)`, καλεί αυτόματα τη μέθοδο `__str__()` του αντικειμένου `person1` και εμφανίζει τη συμβολοσειρά που επιστρέφεται από τη μέθοδο.

### Ορισμός μεθόδων σε κλάσεις Python

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

```python
class Rectangle:
    def __init__(self, length, width):
        self.length = length
        self.width = width
    
    def area(self):
        return self.length * self.width
    def perimeter(self):
        return 2 * (self.length + self.width)
# Creating an object of the class
my_rectangle = Rectangle(5, 10)
# Calling methods of the object
area = my_rectangle.area()
perimeter = my_rectangle.perimeter()
# Printing the calculated values
print("Area =", area) # Output: Area = 50
print("Perimeter =", perimeter) # Output: Perimeter = 30
```

Στο παράδειγμα Python, ορίζουμε την κλάση `Rectangle` με δύο μεθόδους `area()` και `perimeter()`, οι οποίες υπολογίζουν το εμβαδόν και την περίμετρο του ορθογωνίου χρησιμοποιώντας το μήκος και το πλάτος που παρέχονται κατά την αρχικοποίηση του αντικειμένου. Στην Python, `self` σε μια μέθοδο κλάσης λειτουργεί ως **αναφορά στο αντικείμενο στο** οποίο εφαρμόζεται η μέθοδος.

Το αντικείμενο `my_rectangle` δημιουργείται με μήκος 5 και πλάτος 10. Στη συνέχεια, καλούμε τις μεθόδους `area()` και `perimeter()` σε αυτό το αντικείμενο για να υπολογίσουμε τις αντίστοιχες τιμές.

### Αλλαγή των ιδιοτήτων των αντικειμένων

Ο τελεστής `.` dot μπορεί να χρησιμοποιηθεί για την πρόσβαση **σε συγκεκριμένα χαρακτηριστικά του αντικειμένου** και την ενημέρωση των τιμών τους. Μπορείτε να εκχωρήσετε νέες τιμές απευθείας στο χαρακτηριστικό.

```python
person1.name = "Sarah"
person1.age = 35
```

Η λέξη-κλειδί `del` χρησιμοποιείται για τη διαγραφή των ιδιοτήτων ενός αντικειμένου.

```python
del person1.name
```

Note Να θυμάστε ότι οι μεταβλητές της στιγμής διαφέρουν από [τις μεταβλητές της κλάσης Python](https://www.ionos.com/el-gr/digitalguide/istoselides/anaptyxi-istoselidon/metablites-klasis-python/). Οι μεταβλητές της κλάσης ορίζονται **εκτός του κατασκευαστή** και μπορούν να αλλάξουν μόνο χρησιμοποιώντας το όνομα της κλάσης.


This is a markdown version of: [https://www.ionos.com/el-gr/digitalguide/istoselides/anaptyxi-istoselidon/mathimata-python/](https://www.ionos.com/el-gr/digitalguide/istoselides/anaptyxi-istoselidon/mathimata-python/) for AI/LLM consumption.