τα στοιχεία επικοινωνίας μου
Ταχυδρομείο[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Αυτό το άρθρο εισάγει κυρίως μεθόδους κλάσεων και στατικές μεθόδους σε κλάσεις και αντικείμενα στην Python, καθώς και τους ορισμούς, τα χαρακτηριστικά, τα σενάρια εφαρμογής και τις μεθόδους χρήσης μεθόδων κλάσεων και στατικών μεθόδων, και συγκρίνει τα δύο.
Σύντομη ανάλυση του συστήματος εντοπισμού σφαλμάτων CM3
Μετά από μισό μήνα εργασίας, κυκλοφορεί μια περίληψη της ενσωματωμένης στοίβας τεχνολογίας
Μπορείτε να επισκεφτείτε τον παρακάτω σύνδεσμο για να κατεβάσετε το έγγραφο:
https://github.com/leezisheng/Doc
Αυτό το έγγραφο εισάγει κυρίως τον τρόπο χρήσης της Python για αντικειμενοστραφή προγραμματισμό και απαιτεί από τους αναγνώστες να έχουν μια βασική κατανόηση της σύνταξης Python και της ανάπτυξης μικροελεγκτών. Σε σύγκριση με άλλα ιστολόγια ή βιβλία που εξηγούν τον αντικειμενοστραφή προγραμματισμό της Python, αυτό το έγγραφο είναι πιο λεπτομερές και εστιάζει σε εφαρμογές ενσωματωμένων κεντρικών υπολογιστών. Χρησιμοποιεί κοινή αποστολή και λήψη δεδομένων σειριακής θύρας, επεξεργασία δεδομένων, δυναμική σχεδίαση γραφημάτων κ.λπ. και κάτω από τον υπολογιστή ως παραδείγματα εφαρμογών και χρησιμοποιήστε το λογισμικό κώδικα Sourcetrail για να διαβάσετε οπτικά τον κώδικα για να διευκολύνετε την κατανόηση των αναγνωστών.
Οι σχετικοί σύνδεσμοι δειγμάτων κώδικα είναι οι εξής:https://github.com/leezisheng/Python-OOP-Demo
Λαμβάνοντας ως παράδειγμα την κλάση SensorClass, οι λεγόμενες μέθοδοι InitSensor, StartSensor, StopSensor κ.λπ. που ορίζονται στην κλάση είναιΜέθοδοι αντικειμένων, δηλαδή, αυτές οι μέθοδοι είναι όλα τα μηνύματα που αποστέλλονται στο αντικείμενο και όλες καλούν τις ιδιότητες του αντικειμένου.Στην πραγματικότητα, οι μέθοδοι που γράφουμε στην κλάση δεν χρειάζεται να είναι μέθοδοι αντικειμένου Υπάρχει θύρα COM Προφανώς, αυτή η μέθοδος είναι διαφορετική από τα αντικείμενα του αισθητήρα είναι άσχετα.
Για ένα άλλο παράδειγμα, ορίζουμε μια κλάση "Τρίγωνο", κατασκευάζουμε ένα τρίγωνο περνώντας σε τρία μήκη πλευρών και παρέχουμε μεθόδους για τον υπολογισμό της περιμέτρου και του εμβαδού, ωστόσο, τα τρία μήκη πλευρών μπορεί να μην είναι σε θέση να κατασκευάσουν ένα αντικείμενο τριγώνου μπορούμε πρώτα να γράψουμε μια μέθοδο για να επαληθεύσουμε εάν τρία μήκη πλευρών μπορούν να σχηματίσουν ένα τρίγωνο Αυτή η μέθοδος προφανώς δεν είναι μέθοδος αντικειμένου, επειδή το αντικείμενο τριγώνου δεν έχει δημιουργηθεί όταν καλείται αυτή η μέθοδος (επειδή δεν είναι γνωστό αν οι τρεις πλευρές μπορούν. σχηματίζουν ένα τρίγωνο), επομένως αυτή η μέθοδος είναι κλάση Triangle αλλά όχι αντικείμενο τριγώνου.μπορούμε να χρησιμοποιήσουμεστατική μέθοδοςΓια την επίλυση αυτού του είδους προβλήματος, ο κώδικας είναι ο ακόλουθος.
@staticmethod
_# 判断传感器ID号是否正确:这里判断ID号是否在0到99之间_
def IsTrueID(id:int = 0):
if id >= 0 and id <= 99:
return True
else:
return False
Οι στατικές μέθοδοι είναι στην πραγματικότητα οι συναρτήσεις που μάθαμε. Η μόνη διαφορά μεταξύ αυτών και των συναρτήσεων είναι ότι οι στατικές μέθοδοι ορίζονται στο χώρο της κλάσης (χώρος ονομάτων κλάσης), ενώ οι συναρτήσεις ορίζονται στο χώρο όπου βρίσκεται το πρόγραμμα (σφαιρικός χώρος ονομάτων). . Οι στατικές μέθοδοι δεν έχουν ειδικές παραμέτρους όπως self και cls, επομένως ο διερμηνέας Python δεν δεσμεύει καμία κλάση ή αντικείμενο με τις παραμέτρους που περιέχει. Εξαιτίας αυτού, κανένα χαρακτηριστικό κλάσης και μέθοδος κλάσης δεν μπορούν να κληθούν στη στατική μέθοδο της κλάσης. Εδώ ορίζουμε τη στατική μέθοδο IsPort για να προσδιορίσουμε εάν ο αριθμός ID του αισθητήρα είναι σωστός. Η στατική μέθοδος πρέπει να τροποποιηθεί με @staticmethod. Οι κλήσεις στατικής μεθόδου μπορούν να χρησιμοποιούν είτε ονόματα κλάσεων είτε αντικείμενα κλάσεων, για παράδειγμα:
_ # 设置ID号_
id = 1
_ # 判断ID号是否符合格式_
if SensorClass.IsTrueID(id):
s = SensorClass()
else:
print("Sensor Init False")
Παρόμοια με τις στατικές μεθόδους, η Python μπορεί επίσης να ορίσει μεθόδους κλάσης στην κλάση Η πρώτη παράμετρος της μεθόδου κλάσης ονομάζεται συμβατικά cls, η οποία αντιπροσωπεύει το αντικείμενο πληροφοριών που σχετίζεται με την τρέχουσα κλάση (η ίδια η κλάση είναι επίσης ένα αντικείμενο, και σε ορισμένες περιπτώσεις. Τοποθεσίες που καλούνται το αντικείμενο μεταδεδομένων της κλάσης), μέσω αυτής της παραμέτρου μπορούμε να λάβουμε πληροφορίες που σχετίζονται με την κλάση και να δημιουργήσουμε αντικείμενα της κλάσης, η Python θα δεσμεύσει αυτόματα την ίδια την κλάση με την παράμετρο cls (σημειώστε ότι δεν είναι δεσμευμένη στο αντικείμενο της κλάσης. ) . Με άλλα λόγια, όταν καλούμε τη μέθοδο class, δεν χρειάζεται να περάσουμε ρητά παραμέτρους για την παράμετρο cls.
Οι μέθοδοι κλάσης πρέπει να τροποποιηθούν χρησιμοποιώντας τον τροποποιητή @classmethod Ορίζουμε τη μέθοδο της κλάσης MasterInfo.
@classmethod
def MasterInfo(cls):
print("Info : "+str(cls))
print(MasterClass.MasterInfo())