ο παρακάτω παράδειγμα δείχνει πώς να χρησιμοποιηθεί το self
ως παράμετρος στη μέθοδο __init__()
της κλάσης Person
:
class Person: def __init__(self, name, age): self.name = name # Αρχικοποίηση της μεταβλητής name με την τιμή που περνιέται σαν όρισμα self.age = age # Αρχικοποίηση της μεταβλητής age με την τιμή που περνιέται σαν όρισμα def myfunc(self): print("Hello my name is " + self.name) # Εκτύπωση μηνύματος που περιλαμβάνει την τιμή της μεταβλητής name p1 = Person("John", 36) # Δημιουργία αντικειμένου Person με τις παρεχόμενες τιμές για το όνομα και την ηλικία p1.myfunc() # Κλήση της μεθόδου myfunc() για το αντικείμενο p1
Ο παραπάνω κώδικας δημιουργεί μια κλάση με το όνομα “Person”. Η κλάση αυτή έχει μια μέθοδο κατασκευής (μέθοδο __init__
) που αρχικοποιεί τις μεταβλητές name
και age
με τις τιμές που περνιούνται ως όρισματα κατά τη δημιουργία αντικειμένων της κλάσης.
Η κλάση έχει επίσης μια μέθοδο με το όνομα myfunc
, η οποία εκτυπώνει ένα μήνυμα που περιλαμβάνει την τιμή της μεταβλητής name
.
Στον κώδικα δημιουργείται ένα αντικείμενο της κλάσης Person
με τις τιμές “John” για το όνομα και 36 για την ηλικία. Έπειτα, καλείται η μέθοδος myfunc()
για το αντικείμενο αυτό, και εκτυπώνεται το μήνυμα “Hello my name is John” στην έξοδο.
Στο παρακάτω παράδειγμα θα δείξουμε πως μπορούμε να τροποποιήσουμε μια ιδιότητα ενός αντικειμένου της κλάσης Person:
class Person: def __init__(self, name, age): self.name = name # Αρχικοποίηση της μεταβλητής name με την τιμή που περνιέται ως παράμετρος self.age = age # Αρχικοποίηση της μεταβλητής age με την τιμή που περνιέται ως παράμετρος def myfunc(self): print("Hello my name is " + self.name) # Εκτύπωση μηνύματος με το όνομα που είναι αποθηκευμένο στη μεταβλητή name p1 = Person("John", 36) # Δημιουργία ενός αντικειμένου της κλάσης Person με το όνομα "John" και την ηλικία 36 p1.age = 40 # Αλλαγή της τιμής της μεταβλητής age του αντικειμένου p1 σε 40 print(p1.age) # Εκτύπωση της ηλικίας που είναι αποθηκευμένη στη μεταβλητή age του αντικειμένου p1
Ο παραπάνω κώδικας κάνει τα εξής:
- Ορίζει μια κλάση με το όνομα “Person”.
- Στην κλάση Person, ορίζεται ο constructor (
__init__
) που δέχεται δύο παραμέτρους: το όνομα (name
) και την ηλικία (age
). Μέσα στο constructor, αποθηκεύονται οι τιμές των παραμέτρων στις αντίστοιχες μεταβλητές της κλάσης (self.name
καιself.age
). - Ορίζεται μια μέθοδος με το όνομα
myfunc
, η οποία εκτυπώνει ένα μήνυμα που περιλαμβάνει το όνομα που είναι αποθηκευμένο στη μεταβλητήname
. - Δημιουργείται ένα αντικείμενο της κλάσης Person με το όνομα “John” και την ηλικία 36. Οι τιμές αυτές περνιούνται ως παράμετροι στον constructor της κλάσης.
- Αλλάζεται η τιμή της μεταβλητής
age
του αντικειμένου σε 40. - Εκτυπώνεται η τιμή της μεταβλητής
age
του αντικειμένου, η οποία είναι τώρα 40.
Συνολικά, ο κώδικας δημιουργεί ένα αντικείμενο της κλάσης Person, αλλάζει την ηλικία του αντικειμένου και εκτυπώνει την νέα ηλικία.
Μπορείτε επίσης να αφαιρέσετε ιδιότητες από αντικείμενα χρησιμοποιώντας την ενσωματωμένη λέξη-κλειδί del
. Αυτή η λέξη-κλειδί διαγράφει την ύπαρξη μιας ιδιότητας από ένα αντικείμενο.
Παράδειγμα:
class Person: def __init__(self, name, age): self.name = name # Αρχικοποίηση της ιδιότητας name με την τιμή που δίνεται ως παράμετρος self.age = age # Αρχικοποίηση της ιδιότητας age με την τιμή που δίνεται ως παράμετρος def greet(self): print("Hello, my name is " + self.name + " and I am " + str(self.age) + " years old.") # Δημιουργία αντικειμένου person = Person("John", 36) # Πρόσβαση στις ιδιότητες του αντικειμένου print(person.name) # Εκτύπωση της ιδιότητας name print(person.age) # Εκτύπωση της ιδιότητας age # Τροποποίηση ιδιότητας του αντικειμένου person.age = 40 # Τροποποίηση της ιδιότητας age # Πρόσβαση στην τροποποιημένη ιδιότητα του αντικειμένου print(person.age) # Εκτύπωση της τροποποιημένης ιδιότητας age # Διαγραφή ιδιότητας του αντικειμένου del person.age # Διαγραφή της ιδιότητας age
Ο παραπάνω κώδικας δημιουργεί μια κλάση με το όνομα “Person”. Η κλάση αυτή έχει έναν constructor (__init__
) που δέχεται δύο παραμέτρους, το όνομα και την ηλικία του ατόμου. Μέσα στον constructor, οι παράμετροι αναθέτονται σε δύο ιδιότητες του αντικειμένου, το name
και το age
.
Η κλάση περιέχει επίσης μια μέθοδο με το όνομα greet
, η οποία εκτυπώνει ένα μήνυμα υποδοχής που περιλαμβάνει το όνομα και την ηλικία του ατόμου.
Στη συνέχεια, δημιουργείται ένα αντικείμενο με τη χρήση της κλάσης Person
, περνώντας τις τιμές “John” και 36 για το όνομα και την ηλικία αντίστοιχα. Στη συνέχεια, τυπώνονται οι ιδιότητες name
και age
του αντικειμένου.
Στον επόμενο βήμα, η ιδιότητα age
του αντικειμένου τροποποιείται από 36 σε 40, και στη συνέχεια τυπώνεται η τροποποιημένη τιμή της age
.
Τέλος, η ιδιότητα age
του αντικειμένου διαγράφεται με τη χρήση της εντολής del
, και αν κληθεί η εντολή τυπώνοντας ξανά την age
, θα προκαλέσει σφάλμα καθώς η ιδιότητα δεν υπάρ
χει πλέον στο αντικείμενο.
Μπορείτε να διαγράψετε ένα αντικείμενο χρησιμοποιώντας τη λέξη-κλειδί “del”. Αυτό θα διαγράψει την αναφορά στο αντικείμενο, καθιστώντας το αντικείμενο μη προσβάσιμο.
Παράδειγμα:
class Car: def __init__(self, brand, model, year): self.brand = brand # Αρχικοποίηση της μεταβλητής brand με την τιμή που δίνεται ως παράμετρος self.model = model # Αρχικοποίηση της μεταβλητής model με την τιμή που δίνεται ως παράμετρος self.year = year # Αρχικοποίηση της μεταβλητής year με την τιμή που δίνεται ως παράμετρος car1 = Car("Ford", "Mustang", 1964) # Δημιουργία ενός αντικειμένου Car με τις συγκεκριμένες τιμές car2 = Car("Tesla", "Model S", 2021) # Δημιουργία ενός αντικειμένου Car με τις συγκεκριμένες τιμές del car1 # Διαγραφή του αντικειμένου car1
Ο παραπάνω κώδικας δημιουργεί μια κλάση με την ονομασία “Car” που αναπαριστά ένα αυτοκίνητο. Η κλάση έχει έναν κατασκευαστή __init__
που δέχεται τρεις παραμέτρους: brand
, model
και year
. Ο κατασκευαστής αρχικοποιεί τα αντίστοιχα πεδία της κλάσης με τις τιμές που περνιούνται ως παράμετροι.
Στη συνέχεια, δημιουργούνται δύο αντικείμενα της κλάσης Car
. Το πρώτο αντικείμενο ονομάζεται car1
και έχει τις τιμές “Ford” για το brand
, “Mustang” για το model
και 1964 για το year
. Το δεύτερο αντικείμενο ονομάζεται car2
και έχει τις τιμές “Tesla” για το brand
, “Model S” για το model
και 2021 για το year
.
Τέλος, η εντολή del car1
διαγράφει το αντικείμενο car1
από τη μνήμη. Αυτό σημαίνει ότι η μνήμη που είχε καταληφθεί από το αντικείμενο car1
αποδεσμεύεται και μπορεί να χρησιμοποιηθεί από άλλες μεταβλητές ή αντικείμενα.
Στην Python, ο ορισμός μιας κλάσης δεν μπορεί να είναι κενός. Ωστόσο, σε περιπτώσεις όπου χρειάζεται να έχετε έναν ορισμό κλάσης χωρίς περιεχόμενο, μπορείτε να χρησιμοποιήσετε τη δήλωση pass
. Η δήλωση pass
είναι μια ειδική δήλωση στην Python που δεν κάνει τίποτα. Χρησιμοποιείται για να αποφευχθεί το σφάλμα “ελλιπής ορισμός” και δεν έχει κανένα αποτέλεσμα στην εκτέλεση του προγράμματος.
Ας υποθέσουμε ότι έχουμε μια κενή κλάση με το όνομα MyClass
και δεν έχει κανένα περιεχόμενο. Σε αυτήν την περίπτωση, μπορούμε να χρησιμοποιήσουμε τη δήλωση pass
για να αποφευχθεί το σφάλμα ελλιπούς ορισμού. Ακολουθεί ένα παράδειγμα:
class MyClass: pass
Σε αυτό το παράδειγμα, η κλάση MyClass
δεν έχει κανένα περιεχόμενο και η δήλωση pass
χρησιμοποιείται για να αποτρέψει το σφάλμα ελλιπούς ορισμού.