informasi kontak saya
Surat[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Artikel ini terutama memperkenalkan metode kelas dan metode statis di kelas dan objek dengan Python, serta definisi, karakteristik, skenario aplikasi dan metode penggunaan metode kelas dan metode statis, dan membandingkan keduanya.
Analisis singkat sistem debugging CM3
Setelah setengah bulan bekerja, ringkasan tumpukan teknologi tertanam dirilis
Anda dapat mengunjungi link berikut untuk mendownload dokumennya:
https://github.com/leezisheng/Dok
Dokumen ini terutama memperkenalkan cara menggunakan Python untuk pemrograman berorientasi objek, dan mengharuskan pembaca untuk memiliki pemahaman dasar tentang sintaksis Python dan pengembangan mikrokontroler. Dibandingkan dengan blog atau buku lain yang menjelaskan pemrograman berorientasi objek Python, dokumen ini lebih detail dan berfokus pada aplikasi komputer host tertanam. Dokumen ini menggunakan pengiriman dan penerimaan data port serial umum, pemrosesan data, gambar grafik dinamis, dll dan komputer yang lebih rendah sebagai contoh aplikasi. , dan menggunakan perangkat lunak kode Sourcetrail untuk membaca kode secara visual untuk memfasilitasi pemahaman pembaca.
Tautan kode contoh yang relevan adalah sebagai berikut:https://github.com/leezisheng/Demo-OOP-Python
Mengambil kelas SensorClass sebagai contoh, apa yang disebut metode InitSensor, StartSensor, StopSensor, dll. yang didefinisikan dalam kelas tersebut adalahMetode objek, artinya, semua metode ini adalah pesan yang dikirim ke objek, dan semuanya memanggil properti di objek.Faktanya, metode yang kita tulis di kelas tidak harus berupa metode objek. Ada beberapa metode di kelas yang tidak perlu memanggil atribut objek. Misalnya, dalam metode InitSensor, kita mungkin perlu menentukan apakah metode saat ini Port COM ada. Jelas, metode ini berbeda dari objek Sensor yang tidak relevan.
Contoh lain, kita mendefinisikan kelas "Segitiga", membuat segitiga dengan melewatkan tiga panjang sisinya, dan memberikan metode untuk menghitung keliling dan luas. Namun, ketiga panjang sisinya mungkin tidak dapat membuat objek segitiga, jadi pertama-tama kita dapat menulis metode A untuk memverifikasi apakah tiga panjang sisi dapat membentuk segitiga. Metode ini jelas bukan metode objek, karena objek segitiga belum dibuat ketika metode ini dipanggil (karena tidak diketahui apakah ketiga sisinya dapat membentuk segitiga. membentuk segitiga), jadi metode ini adalah kelas Segitiga tetapi bukan objek segitiga.kita bisa gunakanmetode statisUntuk mengatasi masalah seperti ini, kodenya adalah sebagai berikut.
@staticmethod
_# 判断传感器ID号是否正确:这里判断ID号是否在0到99之间_
def IsTrueID(id:int = 0):
if id >= 0 and id <= 99:
return True
else:
return False
Metode statis sebenarnya adalah fungsi yang telah kita pelajari. Satu-satunya perbedaan antara metode statis dan fungsi adalah bahwa metode statis didefinisikan dalam ruang kelas (ruang nama kelas), sedangkan fungsi didefinisikan dalam ruang tempat program berada (ruang nama global). . Metode statis tidak memiliki parameter khusus seperti self dan cls, sehingga interpreter Python tidak mengikat kelas atau objek apa pun ke parameter yang dikandungnya. Oleh karena itu, tidak ada atribut kelas dan metode kelas yang dapat dipanggil dalam metode statis kelas tersebut. Di sini kita mendefinisikan metode statis IsPort untuk menentukan apakah nomor ID sensor sudah benar. Metode statis perlu dimodifikasi dengan @staticmethod. Pemanggilan metode statis dapat menggunakan nama kelas atau objek kelas, misalnya:
_ # 设置ID号_
id = 1
_ # 判断ID号是否符合格式_
if SensorClass.IsTrueID(id):
s = SensorClass()
else:
print("Sensor Init False")
Mirip dengan metode statis, Python juga dapat mendefinisikan metode kelas di kelas. Parameter pertama dari metode kelas secara konvensional diberi nama cls, yang mewakili objek informasi yang terkait dengan kelas saat ini (kelas itu sendiri juga merupakan objek, dan dalam beberapa hal, ini juga merupakan objek. tempat Disebut objek metadata kelas), melalui parameter ini kita dapat memperoleh informasi terkait kelas dan membuat objek kelas. Python secara otomatis akan mengikat kelas itu sendiri ke parameter cls (perhatikan bahwa kelas tersebut tidak terikat ke objek kelas ) . Dengan kata lain, saat kita memanggil metode kelas, kita tidak perlu meneruskan parameter untuk parameter cls secara eksplisit.
Metode kelas perlu dimodifikasi menggunakan pengubah @classmethod. Kami mendefinisikan metode kelas MasterInfo di MasterClass. Kode contohnya adalah sebagai berikut:
@classmethod
def MasterInfo(cls):
print("Info : "+str(cls))
print(MasterClass.MasterInfo())