4.2 Συναρτήσεις κλάσεων στην Python

Η μέθοδος __init__() είναι μια ειδική μέθοδος που υπάρχει σε κάθε κλάση στην Python και καλείται κατά την αρχικοποίηση ενός αντικειμένου της κλάσης. Χρησιμοποιείται για να αρχικοποιήσει μεταβλητές και ιδιότητες του αντικειμένου, έτσι ώστε να έχουν κάποιες αρχικές τιμές κατά τη δημιουργία του αντικειμένου.

Η μέθοδος __init__() συνήθως παίρνει τον εαυτό της (self) ως πρώτη παράμετρο και μπορεί να παίρνει και άλλες παραμέτρους ανάλογα με τις ανάγκες της κλάσης. Μέσα στην __init__() μπορείτε να αρχικοποιήσετε μεταβλητές, να δημιουργήσετε αντικείμενα άλλων κλάσεων, να εκτελέσετε κάποιον κώδικα και να κάνετε άλλες ενέργειες που είναι απαραίτητες για την αρχική διάταξη του αντικειμένου.

Η χρήση της μεθόδου __init__() σας επιτρέπει να διασφαλίσετε ότι τα αντικείμενα της κλάσης έχουν τις κατάλληλες αρχικές τιμές και καταστάσεις πριν χρησιμοποιηθούν σε οποιαδήποτε λειτουργία ή μέθοδο της κλάσης.

Η σύνταξη της init() είναι η εξής:

class MyClass:
  def __init__(self, arg1, arg2):
    # Ο κατασκευαστής της κλάσης MyClass. Αρχικοποιεί τις ιδιότητες property1 και property2 με τις τιμές arg1 και arg2 αντίστοιχα.
    self.property1 = arg1
    self.property2 = arg2

Ο παραπάνω κώδικας ορίζει μια κλάση με το όνομα MyClass. Η κλάση αυτή έχει έναν κατασκευαστή (constructor) με το όνομα __init__, ο οποίος δέχεται δύο ορίσματα (arg1 και arg2).

Μέσα στον κατασκευαστή __init__, οι ιδιότητες property1 και property2 του αντικειμένου της κλάσης (self) αρχικοποιούνται με τις τιμές των ορισμάτων arg1 και arg2 αντίστοιχα. Αυτό σημαίνει ότι κάθε φορά που δημιουργείται ένα αντικείμενο της κλάσης MyClass, μπορούμε να περάσουμε δύο τιμές και αυτές οι τιμές θα αποθηκευτούν στις ιδιότητες property1 και property2 αντίστοιχα.

Ο κώδικας αυτός δημιουργεί μια αρχική κατάσταση για τα αντικείμενα της κλάσης MyClass, ορίζοντας τις αρχικές τιμές των ιδιοτήτων τους.

[adinserter block=”2″]

Ένα ακόμα παράδειγμα μπορεί να είναι η δημιουργία μιας κλάσης “Person”, όπου η συνάρτηση init() θα χρησιμοποιηθεί για να αρχικοποιήσει τις ιδιότητες του αντικειμένου Person (όπως το όνομα και την ηλικία).

Παρακάτω παρατίθεται ένα παράδειγμα κώδικα σε Python:

class Person:
  def __init__(self, name, age):
    self.name = name  # Αρχικοποίηση της μεταβλητής name με την τιμή που δίνεται ως όρισμα
    self.age = age  # Αρχικοποίηση της μεταβλητής age με την τιμή που δίνεται ως όρισμα

  def my_func(self):
    print("Hello, my name is " + self.name)  # Εκτύπωση μηνύματος που περιλαμβάνει την τιμή της μεταβλητής name

p1 = Person("John", 36)  # Δημιουργία ενός αντικειμένου της κλάσης Person με τα όρισματα "John" και 36
p1.my_func()  # Κλήση της μεθόδου my_func για το αντικείμενο p1

Ο παραπάνω κώδικας δημιουργεί μια κλάση με το όνομα “Person” που αναπαριστά μια προσωπική καταχώρηση. Η κλάση έχει έναν constructor (__init__) που αρχικοποιεί τις μεταβλητές name και age με τις τιμές που δίνονται ως ορίσματα.

Υπάρχει επίσης μια μέθοδος με το όνομα my_func που εκτυπώνει ένα μήνυμα που περιλαμβάνει την τιμή της μεταβλητής name.

Στη συνέχεια, δημιουργείται ένα αντικείμενο με την κλάση Person και δίνονται οι τιμές “John” και 36 ως ορίσματα. Τέλος, καλείται η μέθοδος my_func για το αντικείμενο που δημιουργήθηκε, προκαλώντας την εκτύπωση του μηνύματος “Hello, my name is John” στην έξοδο.

Παρακάτω έχουμε ένα ακόμα παράδειγμα που δείχνει πως μπορούμε να χρησιμοποιήσουμε τη μέθοδο __init__() για να αρχικοποιήσουμε τα αντικείμενα ενός κατασκευαστή αυτοκινήτων:

class Car:
    def __init__(self, make, model, year):
        self.make = make  # Αρχικοποίηση του γνωρίσματος 'make' με την τιμή που δίνεται ως παράμετρο
        self.model = model  # Αρχικοποίηση του γνωρίσματος 'model' με την τιμή που δίνεται ως παράμετρο
        self.year = year  # Αρχικοποίηση του γνωρίσματος 'year' με την τιμή που δίνεται ως παράμετρο

    def start(self):
        print("Starting the engine")  # Εκτύπωση μηνύματος "Starting the engine" όταν καλείται η μέθοδος 'start'

my_car = Car("Toyota", "Corolla", 2022)  # Δημιουργία ενός αντικειμένου 'my_car' της κλάσης Car

print(my_car.make)  # Εκτύπωση της τιμής του γνωρίσματος 'make' του αντικειμένου 'my_car'
print(my_car.model)  # Εκτύπωση της τιμής του γνωρίσματος 'model' του αντικειμένου 'my_car'
print(my_car.year)  # Εκτύπωση της τιμής του γνωρίσματος 'year' του αντικειμένου 'my_car'

my_car.start()  # Κλήση της μεθόδου 'start' του αντικειμένου 'my_car'

Ο παραπάνω κώδικας πραγματοποιεί τις εξής ενέργειες:

  1. Ορίζεται η κλάση Car, η οποία έχει έναν κατασκευαστή (__init__) και μια μέθοδο start.
  2. Στον κατασκευαστή __init__, ορίζονται τα γνωρίσματα (make, model, year) της κλάσης Car και αρχικοποιούνται με τις τιμές που δίνονται ως παράμετροι.
  3. Η μέθοδος start απλά εκτυπώνει το μήνυμα “Starting the engine” στην οθόνη.
  4. Δημιουργείται ένα αντικείμενο my_car της κλάσης Car, περνώντας τις τιμές “Toyota”, “Corolla”, 2022 για τα γνωρίσματά του.
  5. Εκτυπώνονται οι τιμές των γνωρισμάτων make, model, year του αντικειμένου my_car.
  6. Καλείται η μέθοδος start του αντικειμένου my_car, η οποία εκτυπώνει το μήνυμα “Starting the engine” στην οθόνη.

[adinserter block=”3″]

Έτσι, ο κώδικας δημιουργεί ένα αντικείμενο τύπου Car και εκτελεί μερικές ενέργειες σχετικές με το αντικείμενο, όπως την προβολή των γνωρισμάτων του και την εκτέλεση της μεθόδου start.

Μπορούμε να καθορίσουμε τον τρόπο με τον οποίο θα αναπαρίσταται ένα αντικείμενο σαν συμβολοσειρά χρησιμοποιώντας τη μέθοδο __str__().

Ας δούμε ένα παράδειγμα:

class Person:
  def __init__(self, name, age):
    self.name = name  # Αρχικοποίηση της μεταβλητής name με την τιμή που περνιέται ως παράμετρος
    self.age = age  # Αρχικοποίηση της μεταβλητής age με την τιμή που περνιέται ως παράμετρος

  def __str__(self):
    return f"My name is {self.name} and I am {self.age} years old."  # Επιστροφή μιας συμβολοσειράς που περιέχει το όνομα και την ηλικία του ατόμου

person = Person("Mike", 19)  # Δημιουργία ενός αντικειμένου της κλάσης Person με τα στοιχεία "Mike" και 19
print(person)  # Εκτύπωση του αντικειμένου person, η οποία καλεί τη μέθοδο __str__() της κλάσης Person

Ο παραπάνω κώδικας δημιουργεί μια κλάση με το όνομα “Person”. Η κλάση αυτή έχει δύο μεθόδους:

  1. Η μέθοδος __init__ είναι ο κατασκευαστής της κλάσης και χρησιμοποιείται για να αρχικοποιήσει τις μεταβλητές ενός αντικειμένου τύπου Person. Λαμβάνει ως παραμέτρους το όνομα (name) και την ηλικία (age) του ατόμου και τις αποθηκεύει στις αντίστοιχες μεταβλητές της κλάσης (self.name και self.age).
  2. Η μέθοδος __str__ είναι μια ειδική μέθοδος που επιστρέφει μια συμβολοσειρά που περιγράφει το αντικείμενο της κλάσης Person. Στην περίπτωση αυτή, η μέθοδος επιστρέφει μια συμβολοσειρά που περιέχει το όνομα και την ηλικία του ατόμου.

Στη συνέχεια, δημιουργείται ένα αντικείμενο person της κλάσης Person με τα στοιχεία “Mike” και 19. Τέλος, εκτυπώνεται το αντικείμενο person, καλώντας τη μέθοδο __str__() της κλάσης Person, η οποία εμφανίζει το μήνυμα “My name is Mike and I am 19 years old.”

[adinserter block=”3″]

Ας υλοποιήσουμε ένα παράδειγμα όπου ορίζουμε μια κλάση με το όνομα “Car”. Στην κλάση αυτή, θα προσθέσουμε μια μέθοδο με το όνομα “display_info” που θα χρησιμοποιείται για να εμφανίζει τα χαρακτηριστικά ενός αυτοκινήτου, όπως η μάρκα, το μοντέλο και το έτος κατασκευής.

Η κλάση θα έχει έναν κατασκευαστή (constructor) που θα δέχεται τα χαρακτηριστικά του αυτοκινήτου και θα τα αποθηκεύει στις αντίστοιχες μεταβλητές της κλάσης (π.χ., self.brand, self.model, self.year).

Η μέθοδος “display_info” θα είναι υπεύθυνη για την εκτύπωση των χαρακτηριστικών του αυτοκινήτου σε μια συμβολοσειρά. Αυτή η μέθοδος θα χρησιμοποιείται για να εμφανίζεται η πληροφορία του αυτοκινήτου όταν καλούμε την συνάρτηση print() για ένα αντικείμενο της κλάσης Car.

Ας δούμε τον κώδικα παρακάτω:

class Car:
  def __init__(self, brand, model, year):
    self.brand = brand  # Αποθήκευση της μάρκας του αυτοκινήτου στη μεταβλητή brand
    self.model = model  # Αποθήκευση του μοντέλου του αυτοκινήτου στη μεταβλητή model
    self.year = year  # Αποθήκευση της χρονιάς κατασκευής του αυτοκινήτου στη μεταβλητή year

  def display_info(self):
    print(f"Brand: {self.brand}, Model: {self.model}, Year: {self.year}")  # Εκτύπωση πληροφοριών του αυτοκινήτου

car = Car("Toyota", "Corolla", 2022)  # Δημιουργία αντικειμένου της κλάσης Car με συγκεκριμένες παραμέτρους
car.display_info()  # Κλήση της μεθόδου display_info για εμφάνιση των πληροφοριών του αυτοκινήτου

Στο παραπάνω παράδειγμα, δημιουργούμε ένα αντικείμενο της κλάσης Car με τις πλ

ηροφορίες “Toyota”, “Corolla” και 2022. Έπειτα, καλούμε τη μέθοδο “display_info()” για να εμφανιστούν τα χαρακτηριστικά του αυτοκινήτου. Το αποτέλεσμα που θα εκτυπωθεί θα είναι “Brand: Toyota, Model: Corolla, Year: 2022”.

7 Ιουνίου, 2023
top
error: Content is protected !!
Μετάβαση σε γραμμή εργαλείων