Middle
Τι κάνει η μέθοδος new στο πλαίσιο της γλώσσας Python;
sobes.tech AI
Απάντηση από AI
__new__ - είναι μια μέθοδος κλάσης που είναι υπεύθυνη για τη δημιουργία μιας νέας στιγμιότυπου της κλάσης. Καλείται πριν από το __init__ και καθορίζει ποιο αντικείμενο θα επιστραφεί. Χρησιμοποιείται κυρίως για τη δημιουργία μοναδικών αντικειμένων (Singleton) ή αντικειμένων αμετάβλητου τύπου (όπως tuple ή str).
class Singleton:
_instance = None
def __new__(cls):
# Ελέγχει αν υπάρχει ήδη ένα στιγμιότυπο
if cls._instance is None:
# Αν όχι, το δημιουργεί αναθέτοντας τη δημιουργία στην υπερκλάση (object)
cls._instance = super().__new__(cls)
# Επιστρέφει το υπάρχον ή το νέο δημιουργημένο στιγμιότυπο
return cls._instance
# Παραδείγματα χρήσης
s1 = Singleton()
s2 = Singleton()
# Αναμενόμενο αποτέλεσμα: True
print(s1 is s2)
Σύγκριση μεταξύ __new__ και __init__:
-
__new__:- Στατική μέθοδος (ο πρώτος παράμετρος είναι
cls). - Καλείται πριν από τη δημιουργία του στιγμιότυπου.
- Επιστρέφει το δημιουργημένο στιγμιότυπο.
- Στατική μέθοδος (ο πρώτος παράμετρος είναι
-
__init__:- Μέθοδος στιγμιότυπου (ο πρώτος παράμετρος είναι
self). - Καλείται μετά τη δημιουργία του στιγμιότυπου.
- Δεν επιστρέφει τιμές (επιστρέφει έμμεσα None).
- Χρησιμοποιείται για την αρχικοποίηση των χαρακτηριστικών του δημιουργημένου αντικειμένου.
- Μέθοδος στιγμιότυπου (ο πρώτος παράμετρος είναι