logo

Python klases un objekti

Klase ir lietotāja definēts projekts vai prototips, no kura tiek izveidoti objekti. Klases nodrošina iespēju apvienot datus un funkcionalitāti. Izveidojot jaunu klasi, tiek izveidots jauna veida objekts, kas ļauj izveidot jaunus šāda veida gadījumus. Katrai klases instancei var būt pievienoti atribūti, lai uzturētu tās stāvokli. Klases gadījumiem var būt arī metodes (noteiktas pēc klases), lai mainītu to stāvokli.

Izprast vajadzību izveidot klasi un objektu Python ņemsim vērā piemēru, pieņemsim, ka vēlējāties izsekot to suņu skaitam, kuriem var būt dažādi atribūti, piemēram, šķirne un vecums. Ja tiek izmantots saraksts, pirmais elements varētu būt suņa šķirne, bet otrais elements varētu attēlot tā vecumu. Pieņemsim, ka ir 100 dažādi suņi, tad kā jūs zināt, kuram elementam ir jābūt? Ko darīt, ja vēlaties šiem suņiem pievienot citas īpašības? Tam trūkst organizācijas, un tā ir precīza nodarbību nepieciešamība.



Sintakse: Klases definīcija

class ClassName:  # Statement>

Sintakse: Objekta definīcija

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

Klase izveido lietotāja definētu Daži punkti Python klasē:



  • Klases tiek veidotas pēc atslēgvārdu klases.
  • Atribūti ir mainīgie, kas pieder klasei.
  • Atribūti vienmēr ir publiski, un tiem var piekļūt, izmantojot punktu (.) operatoru. Piem.: Mana klase.Mans atribūts

Python klases izveide

Šeit klases atslēgvārds norāda, ka veidojat klasi, kam seko klases nosaukums (šajā gadījumā suns).

mēģiniet noķert bloku java
Python3
class Dog: sound = 'bark'>

Python klases objekts

Objekts ir klases gadījums. Klase ir kā projekts, savukārt gadījums ir klases kopija ar faktiskās vērtības . Tā vairs nav ideja, tas ir īsts suns, piemēram, mopsis, kuram ir septiņi gadi. Jums var būt daudz suņu, lai izveidotu daudz dažādu gadījumu, taču bez klases kā ceļveža jūs pazustu, nezinot, kāda informācija ir nepieciešama.

Objekts sastāv no:



  • Valsts: To attēlo objekta atribūti. Tas atspoguļo arī objekta īpašības.
  • Uzvedība: To attēlo objekta metodes. Tas arī atspoguļo objekta reakciju uz citiem objektiem.
  • Identitāte: Tas piešķir objektam unikālu nosaukumu un ļauj vienam objektam mijiedarboties ar citiem objektiem.

pitonu klase

Klases objektu deklarēšana (saukta arī par klases instantifikāciju)

Kad tiek izveidots klases objekts, tiek uzskatīts, ka klase ir instantiēta. Visām instancēm ir kopīgi klases atribūti un uzvedība. Bet šo atribūtu vērtības, t.i., stāvoklis ir unikāls katram objektam. Vienai klasei var būt neierobežots skaits gadījumu.

Piemērs:

pitons, kas deklarē objektu

Python klases un objekta piemērs

Objekta izveide programmā Python ietver klases instantiāciju, lai izveidotu jaunu šīs klases gadījumu. Šo procesu sauc arī par objektu instantiāciju.

Python3
# 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()>

Izvade:

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

Iepriekš minētajā piemērā tiek izveidots objekts, kas būtībā ir suns vārdā Rodžers. Šai klasei ir tikai divi klases atribūti, kas norāda, ka Rodžers ir suns un zīdītājs.

Paskaidrojums:

Šajā piemērā mēs veidojam Dog klasi un esam izveidojuši divus klases mainīgos attr1 un attr2 . Mēs esam izveidojuši metodi ar nosaukumu jautri () kas atgriež virkni I’m a, {attr1} un I'm a, {attr2}. Esam izveidojuši Suņu klases objektu un drukājam pie attr1 no objekta. Visbeidzot, mēs saucam jautri () funkciju .

Pašparametrs

Kad šī objekta metodi saucam par myobject.method(arg1, arg2), Python to automātiski pārvērš par MyClass.method(myobject, arg1, arg2) — tas ir viss īpašais sevi ir par.

Python3
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 Pats Parametrs to nesauc par sevi, tā vietā varat izmantot jebkuru citu nosaukumu. Šeit mēs mainām sevi uz vārdu kāds, un rezultāts būs tāds pats.

Python3
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()>

Izvade: Izvade abiem kodiem būs vienāda.

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

Paskaidrojums:

Šajā piemērā mēs veidojam GFG klasi un esam izveidojuši nosaukums un uzņēmums instances mainīgie konstruktorā. Mēs esam izveidojuši metodi ar nosaukumu saki sveiks() kas atgriež virkni Sveiki, mans vārds ir + {name} + un es strādāju +{uzņēmumā}+.. Mēs esam izveidojuši personu klases objektu un nododam vārdu Jānis un kompānija GeeksForGeeks uz instances mainīgo. Visbeidzot, mēs saucam parādīt () klases.

Paziņojums par nokārtošanu

Programmas izpildi neietekmē caurlaide paziņojuma bezdarbība. Tas tikai ļauj programmai izlaist šo koda sadaļu, neko nedarot. To bieži izmanto, ja Python sintaktiskie ierobežojumi prasa derīgu paziņojumu, bet nav jāizpilda noderīgs kods.

Python3
class MyClass: pass>

__init__() metode

The __karsts__ metode ir līdzīga konstruktoriem C++ un Java . Konstruktori tiek izmantoti, lai inicializētu objekta stāvokli. Tāpat kā metodes, konstruktors satur arī paziņojumu (t.i., instrukciju) kolekciju, kas tiek izpildīta objekta izveides laikā. Tas darbojas, tiklīdz tiek izveidots klases objekts. Metode ir noderīga, lai veiktu jebkuru inicializāciju, ko vēlaties veikt ar savu objektu.

Python3
# 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()>

Izvade:

Hello, my name is Nikhil>

Paskaidrojums:

Šajā piemērā mēs veidojam Personas klasi un esam izveidojuši a nosaukums instances mainīgais konstruktorā. Mēs esam izveidojuši metodi ar nosaukumu say_hi(), kas atgriež virkni Sveiki, mans vārds ir {name}. Mēs esam izveidojuši personu klases objektu un nododam nosaukumu Nikhil instanču mainīgajam. Visbeidzot, mēs izsaucam klases say_hi().

__str__() metodi

Python ir īpaša metode, ko sauc __str__() . ko izmanto, lai definētu, kā a klasē objekts ir jāattēlo kā virkne. To bieži izmanto, lai objektam piešķirtu cilvēkiem lasāmu teksta attēlojumu, kas ir noderīgs reģistrēšanai, atkļūdošanai vai lietotāju objekta informācijas parādīšanai. Ja klases objekts tiek izmantots, lai izveidotu virkni, izmantojot iebūvētās funkcijas print() un str(), __str__() funkcija tiek izmantota automātiski. Varat mainīt to, kā objekti a klasē tiek attēloti virknēs, definējot __str__() metodi.

Python3
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)>

Izvade:

My name is John and I work in GeeksForGeeks.>

Paskaidrojums:

Šajā piemērā mēs veidojam klasi ar nosaukumu GFG. Klasē mēs izveidojam divus gadījumu mainīgos nosaukums un uzņēmums . Izmantojot __str__() metodi, mēs atgriežam nosaukums instances mainīgais un uzņēmums instances mainīgais. Visbeidzot, mēs izveidojam GFG klases objektu un izsaucam __str__() metodi.

Klases un instances mainīgie

Gadījumu mainīgie ir paredzēti datiem, unikāli katrai instancei un klases mainīgie ir paredzēti atribūtiem un metodēm, ko koplieto visi klases gadījumi. Gadījumu mainīgie ir mainīgie, kuru vērtība tiek piešķirta konstruktorā vai metodē ar sevi, savukārt klases mainīgie ir mainīgie, kuru vērtība tiek piešķirta klasē.

Instanču mainīgo definēšana, izmantojot konstruktoru.

Python3
# 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)>

Izvade :

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>

Paskaidrojums:

Klase ar nosaukumu Suns ir definēta ar a klases mainīgais dzīvnieks, kas noteikts stīgu sunim. Klases mainīgos koplieto visi klases objekti, un tiem var piekļūt, izmantojot klases nosaukumu. Suņu klasei ir divi gadījumu mainīgie šķirne un krāsa. Vēlāk mēs veidojam divus objektus Suns klase un mēs drukājam abu objektu vērtību ar klases mainīgo ar nosaukumu dzīvnieks.

Instanču mainīgo definēšana, izmantojot parasto metodi:

Python3
# 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())>

Izvade:

brown>

Paskaidrojums:

Šajā piemērā mēs esam definējuši klasi ar nosaukumu Suns un esam izveidojuši a klases mainīgais dzīvnieks. Mēs esam izveidojuši mainīgo šķirni konstruktors . Klase Suns sastāv no divām metodēm setColor un getColo r, tos izmanto, lai izveidotu un inicializētu gadījuma mainīgo un izgūtu instances mainīgā vērtību. Mēs esam izveidojuši objektu no Suns klasē un esam iestatījuši instances mainīgā vērtību uz brūnu, un mēs drukājam vērtību terminālī.