logo

Python-luokat ja objektit

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 tarpeen Python Tarkastellaanpa 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:  # Statement>

Syntaksi: Objektin määritelmä

obj = ClassName() print(obj.atrr)>

Luokka luo käyttäjän määrittämän 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).

gimp suorakulmio piirtää
Python 3
class Dog: sound = 'bark'>

Python-luokan objekti

Objekti on luokan esiintymä. Luokka on kuin suunnitelma, kun taas esiintymä on kopio luokasta todelliset 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.

python-luokka

Luokkaobjektien 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:

Python ilmoittaa esineen

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 program to # demonstrate instantiating # a class class Dog: # A simple class # attribute attr1 = 'mammal' attr2 = 'dog' # A sample method def fun(self): print('I'm a', self.attr1) print('I'm a', self.attr2) # Driver code # Object instantiation Rodger = Dog() # Accessing class attributes # and method through objects print(Rodger.attr1) Rodger.fun()>

Lähtö:

mammal I'm a mammal I'm a dog>

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 luokkamuuttujaa attr1 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 osoitteessa attr1 esineestä. Lopuksi kutsumme hauskaa () 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 erikoista itse on noin.

Python 3
class GFG: def __init__(self, name, company): self.name = name self.company = company def show(self): print('Hello my name is ' + self.name+' and I' + ' work in '+self.company+'.') obj = GFG('John', 'GeeksForGeeks') obj.show()>

The Itse Parametri 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
class GFG: def __init__(somename, name, company): somename.name = name somename.company = company def show(somename): print('Hello my name is ' + somename.name + ' and I work in '+somename.company+'.') obj = GFG('John', 'GeeksForGeeks') obj.show()>

Lähtö: Molempien koodien lähtö on sama.

Hello my name is John and I work in GeeksForGeeks.>

Selitys:

Tässä esimerkissä luomme GFG-luokan ja olemme luoneet nimi ja yritys instanssimuuttujat konstruktorissa. Olemme luoneet menetelmän nimeltä sano terveisiä() joka palauttaa merkkijonon Hei, nimeni on + {nimi} + ja työskentelen yrityksessä +{yritys}+..Olemme luoneet henkilöluokkaobjektin ja välitämme nimen John and Company GeeksForGeeks instanssimuuttujaan. Lopuksi kutsumme näytä() luokasta.

Passilausunto

Ohjelman suorittamiseen ei vaikuta kulkea lausunnon 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
class MyClass: pass>

__init__() -metodi

The __kuuma__ menetelmä on samanlainen kuin konstruktoreissa C++ ja Java . 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
# Sample class with init method class Person: # init method or constructor def __init__(self, name): self.name = name # Sample Method def say_hi(self): print('Hello, my name is', self.name) p = Person('Nikhil') p.say_hi()>

Lähtö:

Hello, my name is Nikhil>

Selitys:

Tässä esimerkissä luomme Person-luokan ja olemme luoneet a nimi instanssimuuttuja 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 a luokkaa objekti 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 kohteet a luokkaa esitetään merkkijonoissa määrittämällä __str__() menetelmä.

Python 3
class GFG: def __init__(self, name, company): self.name = name self.company = company def __str__(self): return f'My name is {self.name} and I work in {self.company}.' my_obj = GFG('John', 'GeeksForGeeks') print(my_obj)>

Lähtö:

My name is John and I work in GeeksForGeeks.>

Selitys:

Tässä esimerkissä Luomme luokkaa nimeltä GFG. Luomme luokassa kaksi ilmentymämuuttujaa nimi ja yritys . __str__()-metodissa palautetaan nimi instanssimuuttuja ja yhtiö esiintymän muuttuja. Lopuksi luomme GFG-luokan objektia ja kutsumme menetelmää __str__().

Luokka- ja ilmentymämuuttujat

Instanssimuuttujat ovat 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 program to show that the variables with a value # assigned in the class declaration, are class variables and # variables inside methods and constructors are instance # variables. # Class for Dog class Dog: # Class Variable animal = 'dog' # The init method or constructor def __init__(self, breed, color): # Instance Variable self.breed = breed self.color = color # Objects of Dog class Rodger = Dog('Pug', 'brown') Buzo = Dog('Bulldog', 'black') print('Rodger details:') print('Rodger is a', Rodger.animal) print('Breed: ', Rodger.breed) print('Color: ', Rodger.color) print('
Buzo details:') print('Buzo is a', Buzo.animal) print('Breed: ', Buzo.breed) print('Color: ', Buzo.color) # Class variables can be accessed using class # name also print('
Accessing class variable using class name') print(Dog.animal)>

Lähtö :

Rodger details: Rodger is a dog Breed: Pug Color: brown Buzo details: Buzo is a dog Breed: Bulldog Color: black Accessing class variable using class name dog>

Selitys:

Koira-niminen luokka määritellään a:lla luokan muuttuja eläin asetettu narukoiraan. Luokkamuuttujat ovat kaikkien luokan objektien yhteisiä ja niihin pääsee käsiksi luokan nimen avulla. Koiraluokalla on kaksi instanssimuuttujaa rotu ja väri. Myöhemmin luomme kaksi objektia Koira luokka ja tulostamme molempien objektien arvon luokkamuuttujalla nimeltä animal.

Ilmentymämuuttujien määrittäminen normaalilla menetelmällä:

Python 3
# Python3 program to show that we can create # instance variables inside methods # Class for Dog class Dog: # Class Variable animal = 'dog' # The init method or constructor def __init__(self, breed): # Instance Variable self.breed = breed # Adds an instance variable def setColor(self, color): self.color = color # Retrieves instance variable def getColor(self): return self.color # Driver Code Rodger = Dog('pug') Rodger.setColor('brown') print(Rodger.getColor())>

Lähtö:

brown>

Selitys:

Tässä esimerkissä olemme määrittäneet luokan nimeltä Koira ja olemme luoneet a luokan muuttuja eläin. Olemme luoneet instanssimuuttujan rodun rakentaja . Koira-luokka koostuu kahdesta menetelmästä setColor ja getColo r, niitä käytetään ilmentymämuuttujan luomiseen ja alustamiseen sekä ilmentymämuuttujan arvon hakemiseen. Olemme tehneet kohteen Koira luokka ja olemme asettanut instanssimuuttujan arvoksi ruskea ja tulostamme arvon päätteessä.