Luokka on käyttäjän määrittelemä suunnitelma tai prototyyppi, josta objektit luodaan. Luokat tarjoavat keinon niputtaa dataa ja toimintoja yhteen. Uuden luokan luominen luo uudentyyppisen objektin, mikä mahdollistaa sen tyypin uusien esiintymien tekemisen. Jokaiseen luokkainstanssiin voi olla liitetty attribuutteja tilan ylläpitämiseksi. Luokkailmentymillä voi myös olla menetelmiä (oman luokan määrittämiä) tilan muokkaamiseen.
Ymmärtää luokan ja objektin luomisen tarpeenPythonTarkastellaanpa esimerkkiä. Oletetaan, että halusit seurata niiden koirien määrää, joilla voi olla erilaisia ominaisuuksia, kuten rotu ja ikä. Jos käytetään luetteloa, ensimmäinen elementti voi olla koiran rotu ja toinen elementti sen ikää. Oletetaan, että on 100 erilaista koiraa, mistä sitten tiedät, minkä elementin pitäisi olla mikä? Entä jos haluaisit lisätä näihin koiriin muita ominaisuuksia? Tästä puuttuu organisointi ja se on täsmällinen tarve luokille.
Syntaksi:Luokan määritelmä
class ClassName: # Lauseke
Syntaksi:Objektin määritelmä
obj = LuokanNimi()print(obj.atrr)
Luokka luo käyttäjän määrittämäntietorakenne, joka sisältää omat datajäsenensä ja jäsenfunktionsa, joita voidaan käyttää ja joita voidaan käyttää luomalla kyseisen luokan esiintymä. Luokka on kuin suunnitelma esineelle.
Muutama pointti Python-luokasta:
- Luokat luodaan avainsanaluokan mukaan.
- Attribuutit ovat muuttujia, jotka kuuluvat luokkaan.
- Attribuutit ovat aina julkisia ja niitä voi käyttää piste (.) -operaattorilla. Esim.: Oma luokkani.Oma attribuutti
Python-luokan luominen
Tässä luokan avainsana osoittaa, että olet luomassa luokkaa, jota seuraa luokan nimi (tässä tapauksessa koira).
Python 3
luokkaa
Koira:
ääni
=
"haukkua"
Python-luokan objekti
Objekti on luokan esiintymä. Luokka on kuin suunnitelma, kun taas esiintymä on kopio luokastatodelliset arvot. Se ei ole enää idea, se on todellinen koira, kuten rotu mopsi, joka on seitsemän vuotta vanha. Sinulla voi olla useita koiria luomaan monia erilaisia esiintymiä, mutta ilman luokkaa oppaana olisit eksyksissä tietämättä, mitä tietoja tarvitaan.
Objekti koostuu:
- Osavaltio:Sitä edustavat kohteen attribuutit. Se heijastaa myös kohteen ominaisuuksia.
- Käyttäytyminen:Sitä edustavat objektin menetelmät. Se heijastaa myös kohteen reaktiota muihin esineisiin.
- Identiteetti:Se antaa objektille ainutlaatuisen nimen ja mahdollistaa yhden objektin vuorovaikutuksen muiden objektien kanssa.
Claas-objektien ilmoittaminen (kutsutaan myös luokan instantoimiseksi)
Kun luokan objekti luodaan, luokan sanotaan olevan ilmentymä. Kaikki esiintymät jakavat luokan attribuutit ja käyttäytymisen. Mutta näiden attribuuttien arvot, eli tila, ovat yksilöllisiä jokaiselle objektille. Yhdellä luokalla voi olla mikä tahansa määrä esiintymiä.
Esimerkki:
Esimerkki Python-luokasta ja -objektista
Objektin luominen Pythonissa edellyttää luokan luomista uuden esiintymän luomiseksi kyseisestä luokasta. Tätä prosessia kutsutaan myös objektin ilmentämiseksi.
Python 3
# Python3-ohjelma
# osoittavat ilmentymistä
# Luokka
luokkaa
Koira:
# Yksinkertainen luokka
# attribuutti
attr1
=
"nisäkäs"
attr2
=
"koira"
# Esimerkkimenetelmä
def
hauskaa (
itse
):
Tulosta
(
"minä olen"
,
itse
.attr1)
Tulosta
(
"minä olen"
,
itse
.attr2)
# Kuljettajakoodi
# Objektin ilmentäminen
Rodger
=
Koira()
# Luokan attribuuttien käyttö
# ja menetelmä objektien kautta
Tulosta
(Rodger.attr1)
Rodger.fun()
Lähtö:
nisäkäsOlen nisäkäsOlen koira
Yllä olevassa esimerkissä luodaan esine, joka on pohjimmiltaan Rodger-niminen koira. Tällä luokalla on vain kaksi luokkaattribuuttia, jotka kertovat meille, että Rodger on koira ja nisäkäs.
Selitys :
Tässä esimerkissä luomme Koira-luokan ja olemme luoneet kaksi luokkamuuttujaaattr1 ja attr2. Olemme luoneet menetelmän nimeltähauskaa ()joka palauttaa merkkijonon "I'm a, {attr1}" ja I'm a, {attr2}. Olemme luoneet Dog-luokan esineen ja tulostamme osoitteessaattr1esineestä. Lopuksi kutsummehauskaa () toiminto.
Itseparametri
Kun kutsumme tämän objektin menetelmää nimellä myobject.method(arg1, arg2), Python muuntaa sen automaattisesti MyClass.method(omaobjekti, arg1, arg2) - tämä on kaikki erikoistaitseon noin.
Python 3
luokkaa
GFG:
def
__sen sisällä__(
itse
, nimi, yritys):
itse
.nimi
=
nimi
itse
.yhtiö
=
yhtiö
def
näytä(
itse
):
Tulosta
(
"Hei minun nimeni on "
+
itse
.nimi
+
" ja minä"
+
" työskennellä "
+
itse
.yhtiö
+
"."
)
obj
=
GFG(
"John"
,
"GeeksForGeeks"
)
obj.show()
TheItseParametri ei kutsu sitä itseksi, voit käyttää mitä tahansa muuta nimeä sen sijaan. Tässä muutamme minän sanaksi joku ja tulos on sama.
Python 3
luokkaa
GFG:
def
__init__(jokunimi, nimi, yritys):
jokunimi.nimi
=
nimi
jokunimi.yritys
=
yhtiö
def
esitys (joku nimi):
Tulosta
(
"Hei minun nimeni on "
+
jokunimi.nimi
+
"ja olen töissä"
+
jokunimi.yritys
+
"."
)
obj
=
GFG(
"John"
,
"GeeksForGeeks"
)
obj.show()
Lähtö:Molempien koodien lähtö on sama.
Hei, nimeni on John ja työskentelen GeeksForGeeksissä.
Selitys:
Tässä esimerkissä luomme GFG-luokan ja olemme luoneetnimi ja yritysinstanssimuuttujat konstruktorissa. Olemme luoneet menetelmän nimeltäsano terveisiä()joka palauttaa merkkijonon "Hei nimeni on " + {nimi} +" ja työskentelen "+{yritys}+".Olemme luoneet henkilöluokkaobjektin ja välitämme nimenJohn and CompanyGeeksForGeeks instanssimuuttujaan. Lopuksi kutsummenäytä()luokasta.
Passilausunto
Ohjelman suorittamiseen ei vaikuta kulkealausunnon toimimattomuus. Se vain sallii ohjelman ohittaa kyseisen koodin osan tekemättä mitään. Sitä käytetään usein, kun Pythonin syntaktiset rajoitukset vaativat kelvollisen lausunnon, mutta hyödyllistä koodia ei tarvitse suorittaa.
Python 3
luokkaa
Luokkani:
kulkea
__init__() -metodi
The__sen sisällä__menetelmä on samanlainen kuin konstruktoreissaC++jaJava. Konstruktoreita käytetään alustamaan objektin tilaa. Kuten menetelmät, konstruktori sisältää myös kokoelman lauseita (eli käskyjä), jotka suoritetaan objektin luomisen yhteydessä. Se suoritetaan heti, kun luokan objekti on instantoitu. Menetelmä on hyödyllinen minkä tahansa alustuksen tekemiseen, jonka haluat tehdä objektillesi.
Python 3
# Esimerkkiluokka init-menetelmällä
luokkaa
Henkilö:
# init-metodi tai konstruktori
def
__sen sisällä__(
itse
, nimi):
itse
.nimi
=
nimi
# Esimerkkimenetelmä
def
sano terveisiä(
itse
):
Tulosta
(
'Hei minun nimeni on'
,
itse
.nimi)
s
=
Henkilö(
"Nikhil"
)
p.say_hei()
Lähtö:
Hei, nimeni on Nikhil
Selitys:
Tässä esimerkissä luomme Person-luokan ja olemme luoneet animiinstanssimuuttuja konstruktorissa. Olemme luoneet menetelmän nimeltä say_hi(), joka palauttaa merkkijonon "Hei, nimeni on {nimi}". Olemme luoneet henkilöluokan objektin ja välitämme ilmentymämuuttujalle nimen Nikhil. Lopuksi kutsumme luokan say_hi():tä.
__str__() -menetelmää
Pythonilla on erityinen menetelmä nimeltä__str__(). jota käytetään määrittelemään kuinka aluokkaaobjekti tulee esittää merkkijonona. Sitä käytetään usein antamaan objektille ihmisen luettavissa oleva tekstiesitys, josta on apua lokiin, virheenkorjaukseen tai käyttäjien objektitietojen näyttämiseen. Kun luokkaobjektia käytetään luomaan merkkijono käyttämällä sisäänrakennettuja funktioita print() ja str(),__str__()toimintoa käytetään automaattisesti. Voit muuttaa kuinka objektit aluokkaaesitetään merkkijonoissa määrittämällä__str__()menetelmä.
Python 3
luokkaa
GFG:
def
__sen sisällä__(
itse
, nimi, yritys):
itse
.nimi
=
nimi
itse
.yhtiö
=
yhtiö
def
__str__(
itse
):
palata
f
"Nimeni on {self.name} ja työskentelen yrityksessä {self.company}."
my_obj
=
GFG(
"John"
,
"GeeksForGeeks"
)
Tulosta
(my_obj)
Lähtö:
Nimeni on John ja työskentelen GeeksForGeeksissä.
Selitys:
Tässä esimerkissä Luomme luokkaa nimeltä GFG. Luomme luokassa kaksi ilmentymämuuttujaanimi ja yritys. __str__()-metodissa palautetaannimiinstanssimuuttuja jayhtiöesiintymän muuttuja. Lopuksi luomme GFG-luokan objektia ja kutsumme menetelmää __str__().
Luokka- ja ilmentymämuuttujat
Instanssimuuttujatovat dataa varten, ainutlaatuiset jokaiselle esiintymälle ja luokkamuuttujille attribuuteille ja menetelmille, joita luokan kaikki esiintymät jakavat. Ilmentymämuuttujat ovat muuttujia, joiden arvo määritetään konstruktorin tai menetelmän sisällä itsellä, kun taas luokkamuuttujat ovat muuttujia, joiden arvo on määritetty luokassa.
Ilmentymämuuttujien määrittäminen konstruktorilla.
Python 3
# Python3-ohjelma näyttää, että muuttujat, joilla on arvo
# määritetty luokkailmoituksessa, ovat luokkamuuttujia ja
# muuttujat metodien ja konstruktorien sisällä ovat ilmentymiä
#muuttuja.
# Koiran luokka
luokkaa
Koira:
# Luokkamuuttuja
eläin
=
'koira'
# Init-metodi tai konstruktori
def
__sen sisällä__(
itse
, rotu, väri):
# Instanssimuuttuja
itse
.rotu
=
rotu
itse
.väri
=
väri
# Koiraluokan esineet
Rodger
=
Koira(
"Mopsi"
,
"ruskea"
)
Haalari
=
Koira(
"Bulldoggi"
,
"musta"
)
Tulosta
(
"Rodger-tiedot:"
)
Tulosta
(
"Rodger on"
, Rodger.eläin)
Tulosta
(
'rotu:'
, Rodger.rotu)
Tulosta
(
'Väri:'
, Rodger.color)
Tulosta
(
'\nBuzon tiedot:'
)
Tulosta
(
"Buzo on"
, sukeltaja.eläin)
Tulosta
(
'rotu:'
, Buzo.rotu)
Tulosta
(
'Väri:'
, diver.color)
# Luokkamuuttujia voidaan käyttää luokan avulla
#nimi myös
Tulosta
(
"\nLuokkamuuttujan käyttäminen luokan nimellä"
)
Tulosta
(koira.eläin)
Lähtö:
Rodgerin tiedot:Rodger on koiraRotu: MopsiVäri: ruskeaBuzo tiedot:Buzo on koiraRotu: BulldogVäri: musta Luokan muuttujan käyttäminen luokan namedog avulla
Selitys:
Koira-niminen luokka määritellään a:llaluokan muuttujaeläin asetettu merkkijonoon "koira". Luokkamuuttujat ovat kaikkien luokan objektien yhteisiä ja niihin pääsee käsiksi luokan nimen avulla. Koiraluokalla on kaksi instanssimuuttujaarotu ja väri.Myöhemmin luomme kaksi objektiaKoiraluokka ja tulostamme molempien objektien arvon luokkamuuttujalla nimeltä animal.
Ilmentymämuuttujien määrittäminen normaalilla menetelmällä:
Python 3
# Python3-ohjelma näyttää, että voimme luoda
# esiintymän muuttujaa menetelmien sisällä
# Koiran luokka
luokkaa
Koira:
# Luokkamuuttuja
eläin
=
'koira'
# Init-metodi tai konstruktori
def
__sen sisällä__(
itse
, rotu):
# Instanssimuuttuja
itse
.rotu
=
rotu
# Lisää esiintymän muuttujan
def
setColor(
itse
, väri):
itse
.väri
=
väri
# Hakee ilmentymämuuttujan
def
getColor(
itse
):
palata
itse
.väri
# Kuljettajakoodi
Rodger
=
Koira(
"mopsi"
)
Rodger.setColor(
"ruskea"
)
Tulosta
(Rodger.getColor())
Lähtö:
ruskea
Selitys:
Tässä esimerkissä olemme määrittäneet luokan nimeltäKoiraja olemme luoneet aluokan muuttujaeläin. Olemme luoneet instanssimuuttujan rodunrakentaja. Koira-luokka koostuu kahdesta menetelmästäsetColorjagetColor, niitä käytetään ilmentymämuuttujan luomiseen ja alustamiseen sekä ilmentymämuuttujan arvon hakemiseen. Olemme tehneet kohteenKoiraluokka ja olemme asettanut instanssimuuttujan arvoksi ruskea ja tulostamme arvon päätteessä.