Πώς να δημιουργήσετε και να χρησιμοποιήσετε μεταβλητές κλάσης Python
Οι μεταβλητές κλάσης Python είναι ένας δομημένος τρόπος κοινής χρήσης δεδομένων μεταξύ διαφορετικών παρουσιών μιας κλάσης. Εάν κάνετε αλλαγές σε μια μεταβλητή κλάσης, αυτές επηρεάζουν όλες τις παρουσίες της κλάσης. Αυτό σημαίνει ότι δεν χρειάζεται να τις επαναπροσδιορίζετε κάθε φορά που δημιουργούνται.
Τι είναι οι μεταβλητές κλάσης Python;
Στην Python, δημιουργούμε μεταβλητές κλάσης μέσα σε μια κλάση. Σε αντίθεση με τις μεταβλητές παρουσίας, οι οποίες είναι συγκεκριμένες για κάθε παρουσία μιας κλάσης, οι μεταβλητές κλάσης διατηρούν την ίδια τιμή για όλες τις παρουσίες. Οι μεταβλητές κλάσης συνήθως ορίζονται πριν από τον κατασκευαστή και είναι προσβάσιμες από οποιαδήποτε παρουσία της κλάσης.
Οι μεταβλητές κλάσης Python είναι χρήσιμες για την αποθήκευση δεδομένων που ισχύουν για όλες τις περιπτώσεις μιας κλάσης, όπως ρυθμίσεις διαμόρφωσης, προεπιλεγμένες τιμές ή κοινές καταστάσεις σε μια ιεραρχία κλάσεων. Οι μεταβλητές κλάσης σας επιτρέπουν επίσης να ορίσετε μεθόδους ή χαρακτηριστικά κλάσης στα οποία έχει πρόσβαση κάθε περίπτωση, βελτιώνοντας τόσο τη λειτουργικότητα όσο και τη δομή του κώδικα σας.
Ποια είναι η σύνταξη των μεταβλητών κλάσης Python;
Οι μεταβλητές κλάσης Python δημιουργούνται εντός του ορισμού της κλάσης και εκτός των μεθόδων.
class Car:
total_cars = 0 # Class variable to track the total number of cars
def __init__(self, brand, model):
self.brand = brand # Instance variable for the car brand
self.model = model # Instance variable for the car model
Car.total_cars += 1 # Increment the total number of cars upon each instantiation
def display_details(self):
print(f"Brand: {self.brand}, Model: {self.model}")
# Creating instances of Car
car1 = Car("BMW", "X3")
car2 = Car("Audi", "A4")
# Accessing class variable and instance variables
print(f"Total number of cars: {Car.total_cars}") # Output: 2
car1.display_details() # Output: Brand: BMW, Model: X3
car2.display_details() # Output: Brand: Audi, Model: A4pythonΜέσα στην κλάση Car ορίζουμε την μεταβλητή κλάσης total_cars για να παρακολουθούμε τον συνολικό αριθμό των αυτοκινήτων. Ο κατασκευαστής __init__ καλείται όταν δημιουργείται μια νέα παρουσία της κλάσης. Σε κάθε παρουσία, οι μεταβλητές παρουσίας brand και model ορίζονται και η μεταβλητή κλάσης total_cars αυξάνεται κατά 1.
Καλώντας τη μέθοδο display_details(), μπορούμε να εμφανίσουμε τις λεπτομέρειες των αντίστοιχων περιπτώσεων αυτοκινήτων. Σε μια f-string, μια μέθοδο μορφοποίησης συμβολοσειράς Python, μπορούμε να έχουμε πρόσβαση στη μεταβλητή κλάσης total_cars για να εμφανίσουμε τον συνολικό αριθμό των αυτοκινήτων που έχουν δημιουργηθεί.
Παραδείγματα χρήσης μεταβλητών κλάσης Python
Η πρόσβαση, η τροποποίηση και η κληρονομικότητα διαδραματίζουν βασικό ρόλο στην ασφαλή διαχείριση των μεταβλητών κλάσης στην Python.
Πρόσβαση σε μεταβλητές κλάσης
Η πρόσβαση στις μεταβλητές κλάσης Python γίνεται μέσω του ονόματος της κλάσης ή της παρουσίας, ακολουθούμενο από μια τελεία και το όνομα της μεταβλητής.
class MyClass:
class_var = "This is a class variable."
# Using a class name to access a class variable
print(MyClass.class_var) # Output: This is a class variable.
# Using an instance to access a class variable
obj = MyClass()
print(obj.class_var) # Output: This is a class variable.pythonΣτην Python, μπορείτε να έχετε πρόσβαση σε μεταβλητές κλάσης σε διάφορα σημεία:
- Στον κατασκευαστή: Μπορείτε να καλέσετε τη μεταβλητή κλάσης στον κατασκευαστή χρησιμοποιώντας είτε τη λέξη-κλειδί
selfείτε το όνομα της κλάσης. - Στις μεθόδους της στιγμής: Μπορείτε να καλέσετε τη μεταβλητή της κλάσης στις μεθόδους της στιγμής χρησιμοποιώντας είτε τη λέξη-κλειδί
selfείτε το όνομα της κλάσης. - Έξω από την κλάση: Μπορείτε να αποκτήσετε πρόσβαση στη μεταβλητή κλάσης έξω από την κλάση μέσω της αναφοράς αντικειμένου ή χρησιμοποιώντας το όνομα της κλάσης.
Τροποποίηση μεταβλητών κλάσης
Οι μεταβλητές κλάσης Python μπορούν να τροποποιηθούν απευθείας μέσω του ονόματος της κλάσης. Ωστόσο, εάν μια μεταβλητή παρουσίας έχει το ίδιο όνομα με μια μεταβλητή κλάσης και προσπαθήσετε να αλλάξετε τη μεταβλητή μέσω της παρουσίας, θα δημιουργηθεί μια νέα μεταβλητή παρουσίας και η μεταβλητή κλάσης θα παραμείνει αμετάβλητη.
class MyClass:
class_var = "Original class variable"
obj = MyClass()
print(obj.class_var) # Output: Original class variable
MyClass.class_var = "Modified class variable"
print(obj.class_var) # Output: Modified class variablepythonΣε αυτό το παράδειγμα, αντικαταστήσαμε την μεταβλητή κλάσης class_var, αποδίδοντάς της μια νέα τιμή χρησιμοποιώντας την κλάση MyClass. Η αλλαγή υιοθετείται αυτόματα από την παρουσία obj.
Μεταβλητές κλάσης και κληρονομικότητα
Η κληρονομικότητα επιτρέπει στις παράγωγες κλάσεις να έχουν πρόσβαση και να χρησιμοποιούν τις μεταβλητές κλάσης της βασικής κλάσης χωρίς να χρειάζεται να τις επαναπροσδιορίσουν.
class BaseClass:
base_var = "Base variable"
class DerivedClass(BaseClass):
pass
print(DerivedClass.base_var) # Output: Base variablepythonΕδώ ορίζουμε μια βασική κλάση BaseClass, η οποία περιέχει τη μεταβλητή κλάσης base_var. Η παράγωγη κλάση DerivedClass κληρονομεί από BaseClass. Μέσω της κληρονομικότητας, DerivedClass μπορεί να έχει πρόσβαση στη μεταβλητή κλάσης base_var της βασικής κλάσης και να τη χρησιμοποιεί χωρίς να την επαναπροσδιορίζει.