Grunnleggende syntaks og bruk
For å forstå et dataklasse og syntaks, må du forstå den grunnleggende utformingen og strukturen til en Python -klasse først. Nedenfor er et eksempel som viser en enkel Python -klasse:
klasse Stockinhand:I kodeprøven ovenfor er en ny klasse kalt "Stockinhand" blitt opprettet med en "__init__" -metode definert inne i den. __Init__ -metoden påberopes automatisk når du oppretter en ny forekomst av Stockinhand -klasse. I dette tilfellet har __init__ -metoden blitt definert med noen obligatoriske argumenter. Så du kan ikke opprette en ny forekomst av Stockinhand uten noen verdier for nødvendige argumenter. "Selv" -argumentet gir en henvisning til forekomsten av en klasse, slik at du kan bruke den til å referere til hvilken som helst variabel eller metode i en klasse så lenge disse variablene og metodene er blitt definert ved å benytte seg av selvargumentet. Selvargumentet fungerer som et bekvemmelighetsverktøy, og det kan kalles hva som helst. Du kan også utelate det helt. I de siste par uttalelsene opprettes det en ny forekomst av Stockinhand -klassen og variablene får tilgang til ved hjelp av DOT -notasjon.
Etter å ha kjørt ovennevnte kodeprøve, bør du få følgende utdata:
40 50 60Den samme klassen kan defineres ved hjelp av dataklasse som følger:
fra dataklasser importerer dataklasseDen første uttalelsen importerer "DataClass" -dekoratøren fra "DataClasses" -modulen. Dekoratører kan brukes til å endre atferd av Python -objekter uten å endre dem faktisk. I dette tilfellet er dataklasse -dekoratøren forhåndsdefinert og kommer fra dataklassemodulen. For å definere et dataklasse, må du feste dataklassdekoratør ved å bruke "@" -symbol til en Python -klasse, som vist i kodeprøven ovenfor. I de neste utsagnene er variabler i dataklasset definert ved hjelp av type hint for å indikere hvilken type objekt de er. Type hint ble introdusert i Python 3.6 Og de er definert med ":" (kolon) symboler. Du kan opprette en ny forekomst av dataklass som alle andre Python -klasse. Etter å ha kjørt ovennevnte kodeprøve, bør du få følgende utdata:
40 50 60Merk at hvis en metode i dataklasse returnerer en verdi, kan du tilordne den et type hint ved å bruke "->" -symbol. Her er et eksempel:
fra dataklasser importerer dataklasseEn ny metode som heter "Total_stock" er opprettet, og et type hint ved bruk av "int" reservert nøkkelord er blitt tilordnet det for å indikere typen returverdi. Etter å ha kjørt ovennevnte kodeprøve, bør du få følgende utdata:
150Variabler i dataklasseobjekter kan ha standardverdier
Du kan tilordne standardverdier til medlemmer av dataklasser etter typen hint. Her er et eksempel:
fra dataklasser importerer dataklasseI den andre siste uttalelsen har det ikke blitt gitt noen argumenter under opprettelse av en ny forekomst av Stockinhand DataClass, så standardverdier er brukt. Etter å ha kjørt ovennevnte kodeprøve, bør du få følgende utdata:
150Dataklassemedlemmer er mutable
Dataklasser er mutable, slik at du kan endre verdien av medlemmene ved å få en henvisning til dem. Nedenfor er en kodeeksempel:
fra dataklasser importerer dataklasseVerdien av Apples -variabelen er endret før du kaller total_stock -metoden. Etter å ha kjørt ovennevnte kodeprøve, bør du få følgende utdata:
210Opprette et dataklasse fra en liste
Du kan opprette en dataklasse programmatisk ved hjelp av “make_dataclass” -metoden, som vist i kodeprøven nedenfor:
Importer dataklasseMake_dataclass -metoden tar et klassenavn og en liste over medlemsfelt som to obligatoriske argumenter. Du kan definere medlemmer som en liste over tuples der hver tuple inneholder navnet på variabelen, dens type hint og standardverdien. Definere standardverdi er ikke nødvendig, du kan utelate den for å tilordne ingen standardverdi. Det valgfrie navneområdet Argument tar en ordbok som kan brukes til å definere medlemsfunksjoner ved hjelp av nøkkelverdipar og lambda-funksjoner. Koden over tilsvarer nøyaktig å definere følgende dataklasse manuelt:
fra dataklasser importerer dataklasseEtter å ha kjørt de to ovennevnte kodeprøvene, bør du få følgende utdata:
210Hvorfor bruke en dataklasse i stedet for en klasse?
Du lurer kanskje på hvorfor bruk dataklasse hvis de er nesten de samme som andre Python -klasser? En av de viktigste fordelene ved å bruke dataklasse er dens konsisthet. Du kan opprette dataklasser ved hjelp av rene og minimale korthånds uten mye kjeleplate -kode. De er spesielt designet for å brukes som databeholdere der variabler lett kan nås ved hjelp av DOT-notasjon, selv om du også kan bruke dataklasser som fullverdige klasser. Enkelt sagt, hvis du vil bruke en Python -klasse bare for å bruke den som en datalager, ser DataClass ut til å være et bedre valg.
Konklusjon
Dataklasser i Python gir en minimal måte å raskt lage Python -klasser som er ment å brukes som datalagre. Du kan få referanser til medlemmer av dataklasser ved hjelp av DOT-notasjon, og de er spesielt nyttige når du leter etter ordbøker som nøkkelverdipar som kan nås ved hjelp av DOT-notasjon.