2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Tämä artikkeli esittelee pääasiassa luokkamenetelmiä ja staattisia menetelmiä luokissa ja objekteissa Pythonissa sekä luokkamenetelmien ja staattisten menetelmien määritelmiä, ominaisuuksia, sovellusskenaarioita ja käyttömenetelmiä ja vertailee näitä kahta.
Lyhyt analyysi CM3-virheenkorjausjärjestelmästä
Puolen kuukauden työn jälkeen julkaistaan yhteenveto sulautetusta teknologiapinosta
Voit ladata asiakirjan seuraavasta linkistä:
https://github.com/leezisheng/Doc
Tämä asiakirja esittelee pääasiassa Pythonin käyttöä olio-ohjelmointiin ja vaatii lukijoilta perustiedot Python-syntaksista ja mikro-ohjainkehityksestä. Verrattuna muihin Python-olioohjelmointia selittäviin blogeihin tai kirjoihin, tämä asiakirja on yksityiskohtaisempi ja keskittyy sulautettuihin isäntätietokonesovelluksiin. Se käyttää ylemmän tietokoneen yleistä sarjaporttitietojen lähettämistä ja vastaanottamista, tietojenkäsittelyä, dynaamista graafin piirtämistä jne. ja alempi tietokone sovellusesimerkkeinä ja käytä Sourcetrail-koodiohjelmistoa koodin visuaaliseen lukemiseen helpottaaksesi lukijoiden ymmärtämistä.
Asiaankuuluvat esimerkkikoodilinkit ovat seuraavat:https://github.com/leezisheng/Python-OOP-Demo
SensorClass-luokan esimerkkinä ovat luokassa määritellyt ns. InitSensor, StartSensor, StopSensor jne. menetelmät.Objektimenetelmät, toisin sanoen nämä menetelmät ovat kaikki objektille lähetettyjä viestejä, ja ne kaikki kutsuvat objektin ominaisuuksia.Itse asiassa menetelmien kirjoitamme luokassa ei tarvitse olla objektimenetelmiä COM-portti on tietysti erilainen kuin anturiobjektit ovat merkityksettömiä.
Toisessa esimerkissä määrittelemme "Kolmio"-luokan, rakennamme kolmion ohittamalla kolme sivupituutta ja tarjoamme menetelmiä kehän ja pinta-alan laskemiseksi. Nämä kolme sivun pituutta ei kuitenkaan välttämättä pysty rakentamaan kolmioobjektia voimme ensin kirjoittaa menetelmän sen tarkistamiseksi, voivatko kolme sivun pituutta muodostaa kolmion Tämä menetelmä ei tietenkään ole objektimenetelmä, koska kolmioobjektia ei ole luotu tätä menetelmää kutsuttaessa (koska ei tiedetä, voivatko kolme sivua muodostaa kolmion). muodostavat kolmion), joten tämä menetelmä on kolmioluokka, mutta ei kolmioobjekti.voimme käyttäästaattinen menetelmäTämän tyyppisen ongelman ratkaisemiseksi koodi on seuraava.
@staticmethod
_# 判断传感器ID号是否正确:这里判断ID号是否在0到99之间_
def IsTrueID(id:int = 0):
if id >= 0 and id <= 99:
return True
else:
return False
Staattiset menetelmät ovat itse asiassa opittuja toimintoja Ainoa ero niiden ja funktioiden välillä on se, että staattiset menetelmät määritellään luokan avaruudessa (luokan nimiavaruudessa), kun taas funktiot määritellään tilassa, jossa ohjelma sijaitsee (globaali nimiavaruus). . Staattisilla menetelmillä ei ole erityisiä parametreja, kuten self ja cls, joten Python-tulkki ei tee luokka- tai objektisidontaa sisältämilleen parametreille. Tästä johtuen luokan staattisessa menetelmässä ei voida kutsua luokkaattribuutteja ja luokkamenetelmiä. Tässä määritetään IsPort-staattinen menetelmä sen määrittämiseksi, onko anturin ID-numero oikea. Staattista menetelmää on muutettava @staticmethodilla. Staattisen menetelmän kutsumiseksi voit käyttää joko luokan nimeä tai luokkaobjektia, esimerkiksi:
_ # 设置ID号_
id = 1
_ # 判断ID号是否符合格式_
if SensorClass.IsTrueID(id):
s = SensorClass()
else:
print("Sensor Init False")
Samoin kuin staattiset menetelmät, Python voi myös määritellä luokassa luokkametodeja. Luokkametodin ensimmäinen parametri on perinteisesti nimeltään cls, joka edustaa nykyiseen luokkaan liittyvää tiedon kohdetta (luokka itse on myös objekti, ja joissakin tapauksissa). paikkoja Kutsutaan luokan metatietoobjektiksi), tämän parametrin kautta saamme luokkaan liittyviä tietoja ja luoda luokan objekteja Python sitoo itse luokan automaattisesti cls-parametriin (huomaa, että se ei ole sidottu luokkaobjektiin. ) . Toisin sanoen, kun kutsumme luokkametodia, meidän ei tarvitse erikseen välittää parametreja cls-parametrille.
Luokkametodeja on muokattava käyttämällä @classmethod-muuttajaa. Määrittelemme MasterClassissa luokkametodin.
@classmethod
def MasterInfo(cls):
print("Info : "+str(cls))
print(MasterClass.MasterInfo())