Κοινή χρήση τεχνολογίας

Εξερευνήστε τον προγραμματισμό [Python Object-Oriented]: Λεπτομερής επεξήγηση των προηγμένων παραδειγμάτων προγραμματισμού στη νέα εποχή

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Πίνακας περιεχομένων

1. Αντικειμενοστρεφείς έννοιες προγραμματισμού (OOP)

1.1 Τι είναι οι κλάσεις και τα αντικείμενα;

1.2 Ορισμός τάξης

1.3 Σχέση κλάσεων και αντικειμένων

1.4 Η κατανόηση του Xiao Li

2. Αφαίρεση

2.1 Αφηρημένες έννοιες

2.2 Αφηρημένες τάξεις και μέθοδοι

2.3 Η κατανόηση του Xiao Li

3. Τάξεις και περιπτώσεις

3.1 Ορισμός και εισαγωγή κλάσης

3.2 Χαρακτηριστικά και μέθοδοι κλάσης

3.3 Η κατανόηση του Xiao Li

4. Ενθυλάκωση/διεπαφή

4.1 Έννοια της ενθυλάκωσης

4.2 Έννοια της διεπαφής

4.3 Η κατανόηση του Xiao Li

5. Κληρονομικότητα

5.1 Η έννοια της κληρονομιάς

5.2 Επαναγραφή μεθόδου

5.3 Η κατανόηση του Xiao Li

6. Πολυμορφισμός

6.1 Η έννοια του πολυμορφισμού

6.2 Εφαρμογή πολυμορφισμού

6.3 Η κατανόηση του Xiao Li

7. Ενδοσκόπηση/Αναστοχασμός

7.1 Η έννοια της ενδοσκόπησης

7.2 Χρήση ενδοσκόπησης για δυναμικές λειτουργίες

7.3 Η κατανόηση του Xiao Li

8. Στατικές μέθοδοι και μέθοδοι κλάσεων

8.1 Στατικές μέθοδοι

8.2 Μέθοδοι τάξης

Συνοψίζω


 

Στήλη: σημειώσεις μελέτης πύθωνα

Προηγούμενος τόμος: Ρυθμοποίηση Python και διαχείριση πακέτων

1. Αντικειμενοστρεφείς έννοιες προγραμματισμού (OOP)

Αντικειμενοστραφής προγραμματισμός (OOP) Είναι ένα πρότυπο προγραμματισμού που υλοποιείται με την οργάνωση προγραμμάτων σε συλλογές αντικειμένων. Τα αντικείμενα περιέχουν όχι μόνο δεδομένα αλλά και μεθόδους χειρισμού αυτών των δεδομένων. Οι βασικές έννοιες του OOP περιλαμβάνουν κλάσεις, αντικείμενα, ιδιότητες και μεθόδους.

1.1 Τι είναι οι κλάσεις και τα αντικείμενα;

  • Τάξη Είναι ένα πρότυπο ή σχεδιάγραμμα που χρησιμοποιείται για τη δημιουργία αντικειμένων. Οι κλάσεις ορίζουν τις ιδιότητες και τη συμπεριφορά των αντικειμένων.
  • Αντικείμενο Είναι ένα παράδειγμα της τάξης. Η δημιουργία ενός αντικειμένου είναι η δημιουργία ενός συγκεκριμένου στιγμιότυπου με βάση την κλάση.

παράδειγμα:

  1. class Dog:
  2. # 类的初始化方法
  3. def __init__(self, name, age):
  4. self.name = name # 属性
  5. self.age = age # 属性
  6. # 方法
  7. def bark(self):
  8. return f"{self.name} says Woof!"
  9. # 创建对象
  10. my_dog = Dog("Rex", 5)
  11. print(my_dog.bark())

1.2 Ορισμός τάξης

Στην Python οι τάξεις περνούν class Ορισμός λέξης-κλειδιού. Οι συναρτήσεις σε μια κλάση ονομάζονται μέθοδοι και οι μεταβλητές ονομάζονται ιδιότητες.Οι μέθοδοι τάξης συνήθως ξεκινούν μεself Ως πρώτη παράμετρος, αντιπροσωπεύει το ίδιο το παράδειγμα.

παράδειγμα:

  1. class Cat:
  2. def __init__(self, name):
  3. self.name = name
  4. def meow(self):
  5. return f"{self.name} says Meow!"
  6. # 创建对象
  7. my_cat = Cat("Whiskers")
  8. print(my_cat.meow())

1.3 Σχέση κλάσεων και αντικειμένων

Μια κλάση είναι ένα πρότυπο για ένα αντικείμενο και ορίζει τη δομή και τη συμπεριφορά του αντικειμένου. Τα αντικείμενα είναι στιγμιότυπα κλάσεων και κάθε αντικείμενο έχει ανεξάρτητες ιδιότητες και μεθόδους.

  1. class Person:
  2. def __init__(self, name, age):
  3. self.name = name
  4. self.age = age
  5. def greet(self):
  6. return f"Hello, my name is {self.name} and I am {self.age} years old."
  7. # 创建多个对象
  8. person1 = Person("Alice", 30)
  9. person2 = Person("Bob", 25)
  10. print(person1.greet())
  11. print(person2.greet())

1.4 Η κατανόηση του Xiao Li

Μια κλάση είναι σαν ένα καλούπι μπισκότων, καθορίζει το σχήμα και το μέγεθος του cookie. Τα αντικείμενα είναι σαν μπισκότα από σκυρόδεμα φτιαγμένα από καλούπι Κάθε μπισκότο μπορεί να έχει διαφορετικές γεύσεις (ιδιότητες), αλλά το σχήμα και το μέγεθός τους (δομή και συμπεριφορά) είναι τα ίδια.

2. Αφαίρεση

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

2.1 Αφηρημένες έννοιες

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

παράδειγμα:

  1. class Animal:
  2. def __init__(self, name):
  3. self.name = name
  4. def make_sound(self):
  5. pass # 抽象方法,不具体实现
  6. class Dog(Animal):
  7. def make_sound(self):
  8. return "Woof!"
  9. class Cat(Animal):
  10. def make_sound(self):
  11. return "Meow!"
  12. # 创建对象
  13. dog = Dog("Rex")
  14. cat = Cat("Whiskers")
  15. print(dog.make_sound())
  16. print(cat.make_sound())

2.2 Αφηρημένες τάξεις και μέθοδοι

Στην Python, μπορούμε να επιτύχουμε αφαίρεση ορίζοντας αφηρημένες κλάσεις και αφηρημένες μεθόδους. Οι αφηρημένες τάξεις δεν μπορούν να δημιουργηθούν, μόνο να κληρονομηθούν. Οι αφηρημένες μέθοδοι ορίζονται στην κλάση abstract αλλά υλοποιούνται σε υποκλάσεις.

παράδειγμα:

  1. from abc import ABC, abstractmethod
  2. class Vehicle(ABC):
  3. @abstractmethod
  4. def start_engine(self):
  5. pass
  6. class Car(Vehicle):
  7. def start_engine(self):
  8. return "Car engine started"
  9. class Motorcycle(Vehicle):
  10. def start_engine(self):
  11. return "Motorcycle engine started"
  12. # 创建对象
  13. car = Car()
  14. motorcycle = Motorcycle()
  15. print(car.start_engine())
  16. print(motorcycle.start_engine())

2.3 Η κατανόηση του Xiao Li

Η αφαίρεση είναι σαν να ανάγουμε έναν περίπλοκο πίνακα σε γεωμετρικά σχήματα. Για παράδειγμα, μια συγκεκριμένη γάτα έχει πολλά χαρακτηριστικά (χρώμα τριχώματος, μέγεθος, ηλικία κ.λπ.), αλλά εστιάζουμε μόνο στο χαρακτηριστικό του νιαουρίσματος Αυτό είναι η αφαίρεση της γάτας.

3. Τάξεις και περιπτώσεις

Τάξεις και περιπτώσεις Είναι η βάση του OOP. Οι κλάσεις είναι πρότυπα και οι περιπτώσεις είναι συγκεκριμένα αντικείμενα. Τα στιγμιότυπα δημιουργούνται από μια κλάση και έχουν τις ιδιότητες και τις μεθόδους που ορίζονται από την κλάση.

3.1 Ορισμός και εισαγωγή κλάσης

Ο ορισμός μιας κλάσης και η δημιουργία μιας παρουσίας είναι οι βασικές λειτουργίες του OOP. Οι κλάσεις ορίζουν ιδιότητες και μεθόδους και τα στιγμιότυπα είναι συγκεκριμένα αντικείμενα της κλάσης.

παράδειγμα:

  1. class Student:
  2. def __init__(self, name, grade):
  3. self.name = name
  4. self.grade = grade
  5. def introduce(self):
  6. return f"Hi, I am {self.name} and I am in grade {self.grade}."
  7. # 创建实例
  8. student1 = Student("Alice", 10)
  9. student2 = Student("Bob", 12)
  10. print(student1.introduce())
  11. print(student2.introduce())

3.2 Χαρακτηριστικά και μέθοδοι κλάσης

Τα χαρακτηριστικά μιας κλάσης είναι η κατάσταση του αντικειμένου και οι μέθοδοι είναι η συμπεριφορά του αντικειμένου.Τα χαρακτηριστικά της κλάσης περνούν__init__ Αρχικοποίηση μεθόδου, η μέθοδος ορίζεται στην κλάση.

παράδειγμα:

  1. class Book:
  2. def __init__(self, title, author):
  3. self.title = title
  4. self.author = author
  5. def get_info(self):
  6. return f"'{self.title}' by {self.author}"
  7. # 创建实例
  8. book = Book("1984", "George Orwell")
  9. print(book.get_info())

3.3 Η κατανόηση του Xiao Li

Οι τάξεις και οι περιπτώσεις είναι σαν ένα σχέδιο ενός σπιτιού και ενός πραγματικού σπιτιού. Τα σχέδια (τάξεις) ορίζουν τη δομή και τη λειτουργικότητα του σπιτιού, ενώ το πραγματικό σπίτι (παράδειγμα) είναι το συγκεκριμένο αντικείμενο που κατασκευάζεται σύμφωνα με τα σχέδια.

4. Ενθυλάκωση/διεπαφή

ενθυλάκωση Κρύβει την κατάσταση (ιδιότητες) και τη συμπεριφορά (μέθοδοι) του αντικειμένου μέσα στην κλάση και αλληλεπιδρά με τον έξω κόσμο μέσω της διεπαφής (μέθοδοι). Η ενθυλάκωση βελτιώνει την ασφάλεια και τη συντηρησιμότητα του κώδικα.

4.1 Έννοια της ενθυλάκωσης

Η ενθυλάκωση είναι μία από τις βασικές έννοιες του OOP Προστατεύει τα δεδομένα του αντικειμένου αποκρύπτοντας την εσωτερική κατάσταση του αντικειμένου και εκθέτοντας μόνο τις απαραίτητες διεπαφές. Με αυτόν τον τρόπο, ο εξωτερικός κώδικας δεν μπορεί να έχει άμεση πρόσβαση ή να τροποποιήσει την εσωτερική κατάσταση του αντικειμένου και μπορεί να χειριστεί δεδομένα μόνο μέσω των μεθόδων που παρέχονται από το αντικείμενο.

παράδειγμα:

  1. class Account:
  2. def __init__(self, owner, balance=0):
  3. self.owner = owner
  4. self.__balance = balance # 私有属性
  5. def deposit(self, amount):
  6. if amount > 0:
  7. self.__balance += amount
  8. else:
  9. raise ValueError("Deposit amount must be positive")
  10. def withdraw(self, amount):
  11. if 0 < amount <= self.__balance:
  12. self.__balance -= amount
  13. else:
  14. raise ValueError("Insufficient funds or invalid amount")
  15. def get_balance(self):
  16. return self.__balance
  17. # 创建实例
  18. account = Account("John")
  19. account.deposit(100)
  20. print(account.get_balance())

4.2 Έννοια της διεπαφής

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

παράδειγμα:

  1. class Car:
  2. def __init__(self, model):
  3. self.model = model
  4. self.__engine_started = False
  5. def start_engine(self):
  6. if not self.__engine_started:
  7. self.__engine_started = True
  8. return "Engine started"
  9. else:
  10. return "Engine is already running"
  11. def stop_engine(self):
  12. if self.__engine_started:
  13. self.__engine_started = False
  14. return "Engine stopped"
  15. else:
  16. return "Engine is not running"
  17. # 创建实例
  18. car = Car("Toyota")
  19. print(car.start_engine())
  20. print(car.stop_engine())

4.3 Η κατανόηση του Xiao Li

Η συσκευασία είναι σαν το περίβλημα ενός κινητού τηλεφώνου. Τα κυκλώματα και τα εξαρτήματα (κατάσταση του αντικειμένου) μέσα στο κινητό τηλέφωνο είναι εγκλωβισμένα στο περίβλημα.

5. Κληρονομικότητα

κληρονομώ Είναι μια άλλη βασική έννοια του OOP, η οποία μας επιτρέπει να δημιουργήσουμε μια νέα κλάση με βάση μια υπάρχουσα κλάση.

5.1 Η έννοια της κληρονομιάς

Κληρονομικότητα είναι όταν μια κλάση (υποκλάση) αποκτά ιδιότητες και μεθόδους από μια άλλη κλάση (γονική κλάση). Μέσω της κληρονομικότητας, οι υποκλάσεις μπορούν να επαναχρησιμοποιήσουν τον κώδικα της γονικής κλάσης, να προσθέσουν νέες ιδιότητες και μεθόδους ή να παρακάμψουν τις μεθόδους της γονικής κλάσης.

παράδειγμα:

  1. class Animal:
  2. def __init__(self, name):
  3. self.name = name
  4. def speak(self):
  5. pass
  6. class Dog(Animal):
  7. def speak(self):
  8. return "Woof!"
  9. class Cat(Animal):
  10. def speak(self):
  11. return "Meow!"
  12. # 创建实例
  13. dog = Dog("Rex")
  14. cat = Cat("Whiskers")
  15. print(dog.speak())
  16. print(cat.speak())

5.2 Επαναγραφή μεθόδου

Μια υποκλάση μπορεί να παρακάμψει τη μέθοδο της γονικής κλάσης, δηλαδή να ορίσει μια μέθοδο με το ίδιο όνομα με τη μητρική κλάση στην υποκλάση για την επίτευξη διαφορετικών συναρτήσεων.

παράδειγμα:

  1. class Shape:
  2. def area(self):
  3. return 0
  4. class Rectangle(Shape):
  5. def __init__(self, width, height):
  6. self.width = width
  7. self.height = height
  8. def area(self):
  9. return self.width * self.height
  10. class Circle(Shape):
  11. def __init__(self, radius):
  12. self.radius = radius
  13. def area(self):
  14. return 3.14 * (self.radius ** 2)
  15. # 创建实例
  16. rectangle = Rectangle(3, 4)
  17. circle = Circle(5)
  18. print(rectangle.area())
  19. print(circle.area())

5.3 Η κατανόηση του Xiao Li

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

6. Πολυμορφισμός

Πολυμορφισμός Σημαίνει ότι η ίδια μέθοδος έχει διαφορετικές εκδηλώσεις σε διαφορετικά αντικείμενα. Ο πολυμορφισμός μας επιτρέπει να καλούμε μεθόδους διαφορετικών αντικειμένων μέσω της ίδιας διεπαφής για να επιτύχουμε διαφορετικές λειτουργίες.

6.1 Η έννοια του πολυμορφισμού

Ο πολυμορφισμός είναι ένα από τα σημαντικά χαρακτηριστικά του OOP που οδηγεί σε υποκλάση αντικειμένων μέσω αναφορών γονικής κλάσης, επιτρέποντας στην ίδια μέθοδο να έχει διαφορετικές υλοποιήσεις. Ο πολυμορφισμός αυξάνει την ευελιξία και την επεκτασιμότητα του κώδικα.

παράδειγμα:

  1. class Animal:
  2. def speak(self):
  3. pass
  4. class Dog(Animal):
  5. def speak(self):
  6. return "Woof!"
  7. class Cat(Animal):
  8. def speak(self):
  9. return "Meow!"
  10. def animal_sound(animal):
  11. print(animal.speak())
  12. # 创建实例
  13. dog = Dog()
  14. cat = Cat()
  15. animal_sound(dog)
  16. animal_sound(cat)

 

6.2 Εφαρμογή πολυμορφισμού

Στην Python, ο πολυμορφισμός συνήθως υλοποιείται μέσω της παράκαμψης μεθόδων και των αναφορών γονικής κλάσης. Υποδεικνύοντας το αντικείμενο υποκλάσης μέσω της αναφοράς γονικής κλάσης, μπορείτε να καλέσετε τη μέθοδο υποκλάσης.

παράδειγμα:

  1. class Shape:
  2. def draw(self):
  3. pass
  4. class Rectangle(Shape):
  5. def draw(self):
  6. return "Drawing a rectangle"
  7. class Circle(Shape):
  8. def draw(self):
  9. return "Drawing a circle"
  10. def draw_shape(shape):
  11. print(shape.draw())
  12. # 创建实例
  13. rectangle = Rectangle()
  14. circle = Circle()
  15. draw_shape(rectangle)
  16. draw_shape(circle)

 

6.3 Η κατανόηση του Xiao Li

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

7. Ενδοσκόπηση/Αναστοχασμός

ενδοσκόπηση Σημαίνει ότι το αντικείμενο μπορεί να γνωρίζει τις δικές του πληροφορίες κατά το χρόνο εκτέλεσης. Η Python παρέχει ορισμένες ενσωματωμένες λειτουργίες για ενδοσκόπηση, όπως π.χtype()id()hasattr() Περίμενε.

7.1 Η έννοια της ενδοσκόπησης

Η ενδοσκόπηση σημαίνει ότι ένα αντικείμενο μπορεί να αποκτήσει τις δικές του πληροφορίες κατά το χρόνο εκτέλεσης, όπως ιδιότητες, μεθόδους κ.λπ. Η ενδοσκόπηση καθιστά τα προγράμματα της Python εξαιρετικά δυναμικά και ευέλικτα.

παράδειγμα:

  1. class Person:
  2. def __init__(self, name, age):
  3. self.name = name
  4. self.age = age
  5. person = Person("Alice", 30)
  6. # 使用内置函数进行自省
  7. print(type(person))
  8. print(hasattr(person, "name"))
  9. print(getattr(person, "name"))
  10. setattr(person, "name", "Bob")
  11. print(person.name)
  12. delattr(person, "name")

7.2 Χρήση ενδοσκόπησης για δυναμικές λειτουργίες

Μέσω της ενδοσκόπησης, μπορούμε να χειριστούμε δυναμικά τις ιδιότητες και τις μεθόδους των αντικειμένων κατά το χρόνο εκτέλεσης, κάνοντας το πρόγραμμα πιο ευέλικτο και δυναμικό.

παράδειγμα:

  1. class Car:
  2. def __init__(self, model):
  3. self.model = model
  4. self.speed = 0
  5. def accelerate(self):
  6. self.speed += 5
  7. return self.speed
  8. car = Car("Toyota")
  9. # 动态操作对象
  10. if hasattr(car, "accelerate"):
  11. method = getattr(car, "accelerate")
  12. print(method())
  13. print(method())
  14. # 动态设置属性
  15. setattr(car, "color", "red")
  16. print(car.color)

7.3 Η κατανόηση του Xiao Li

Η αυτοεξέταση είναι σαν να κοιτάζεσαι στον καθρέφτη. Μέσω του καθρέφτη (μηχανισμός ενδοσκόπησης), οι άνθρωποι μπορούν να δουν πώς μοιάζουν (ιδιότητες και μέθοδοι αντικειμένων) και να κάνουν προσαρμογές όπως χρειάζεται (δυναμικός χειρισμός αντικειμένων).

8. Στατικές μέθοδοι και μέθοδοι κλάσεων

στατική μέθοδος καιμέθοδος τάξης είναι μέθοδοι που σχετίζονται με την κλάση, όχι την παρουσία.χρήση στατικής μεθόδου@staticmethod Διακοσμητής, χρήση μεθόδου τάξης@classmethod Διακοσμητής.

8.1 Στατικές μέθοδοι

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

παράδειγμα:

  1. class Math:
  2. @staticmethod
  3. def add(a, b):
  4. return a + b
  5. print(Math.add(5, 3))

 

8.2 Μέθοδοι τάξης

Οι μέθοδοι κλάσης είναι μέθοδοι που συνδέονται με την κλάση και όχι με την παρουσία.Το πρώτο όρισμα σε μια μέθοδο κλάσης είναι η ίδια η κλάση, που συνήθως ονομάζεταιcls . Οι μέθοδοι κλάσης μπορούν να έχουν πρόσβαση στις ιδιότητες της κλάσης και σε άλλες μεθόδους κλάσης.

παράδειγμα:

  1. class Math:
  2. factor = 2
  3. @classmethod
  4. def multiply(cls, value):
  5. return cls.factor * value
  6. print(Math.multiply(5))

Συνοψίζω

Όλες οι πτυχές του αντικειμενοστρεφούς προγραμματισμού στην Python, συμπεριλαμβανομένων των βασικών εννοιών του αντικειμενοστρεφούς προγραμματισμού, των αφαιρέσεων, των κλάσεων και των περιπτώσεων, της ενθυλάκωσης, της κληρονομικότητας, του πολυμορφισμού, της ενδοσκόπησης και των στατικών και μεθόδων κλάσης.

Ελπίζω αυτό το λεπτομερές ιστολόγιο να σας βοηθήσει να κατανοήσετε σε βάθος τον αντικειμενοστραφή προγραμματισμό στην Python και να εφαρμόσετε αυτή τη γνώση σε πραγματικά έργα. Εάν έχετε οποιεσδήποτε ερωτήσεις ή χρειάζεστε περαιτέρω βοήθεια, μη διστάσετε να επικοινωνήσετε μαζί μου!