Customize Consent Preferences

We use cookies to help you navigate efficiently and perform certain functions. You will find detailed information about all cookies under each consent category below.

The cookies that are categorized as "Necessary" are stored on your browser as they are essential for enabling the basic functionalities of the site. ... 

Always Active

Necessary cookies are required to enable the basic features of this site, such as providing secure log-in or adjusting your consent preferences. These cookies do not store any personally identifiable data.

No cookies to display.

Functional cookies help perform certain functionalities like sharing the content of the website on social media platforms, collecting feedback, and other third-party features.

No cookies to display.

Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics such as the number of visitors, bounce rate, traffic source, etc.

No cookies to display.

Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.

No cookies to display.

Advertisement cookies are used to provide visitors with customized advertisements based on the pages you visited previously and to analyze the effectiveness of the ad campaigns.

No cookies to display.

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

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

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

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

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

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
class MyClass:
def __init__(self, arg1, arg2):
# Ο κατασκευαστής της κλάσης MyClass. Αρχικοποιεί τις ιδιότητες property1 και property2 με τις τιμές arg1 και arg2 αντίστοιχα.
self.property1 = arg1
self.property2 = arg2
class MyClass: def __init__(self, arg1, arg2): # Ο κατασκευαστής της κλάσης MyClass. Αρχικοποιεί τις ιδιότητες property1 και property2 με τις τιμές arg1 και arg2 αντίστοιχα. self.property1 = arg1 self.property2 = arg2
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:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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
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
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__() για να αρχικοποιήσουμε τα αντικείμενα ενός κατασκευαστή αυτοκινήτων:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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'
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'
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__().

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

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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
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
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.

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

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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 για εμφάνιση των πληροφοριών του αυτοκινήτου
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 για εμφάνιση των πληροφοριών του αυτοκινήτου
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 !!
Μετάβαση σε γραμμή εργαλείων