logo

Razredi in objekti Python

Razred je uporabniško definiran načrt ali prototip, iz katerega so ustvarjeni predmeti. Razredi zagotavljajo sredstvo za združevanje podatkov in funkcionalnosti. Ustvarjanje novega razreda ustvari novo vrsto predmeta, ki omogoča ustvarjanje novih primerkov te vrste. Vsak primerek razreda ima lahko pripete atribute za ohranjanje svojega stanja. Primerki razreda imajo lahko tudi metode (ki jih definira njihov razred) za spreminjanje njihovega stanja.

Za razumevanje potrebe po ustvarjanju razreda in predmeta v Python vzemimo primer, recimo, da ste želeli slediti številu psov, ki imajo lahko različne lastnosti, kot sta pasma in starost. Če se uporablja seznam, je lahko prvi element pasma psa, medtem ko drugi element lahko predstavlja njegovo starost. Recimo, da obstaja 100 različnih psov, kako bi potem vedeli, kateri element naj bi bil kateri? Kaj pa, če bi želeli tem psom dodati druge lastnosti? Temu manjka organizacija in to je natančna potreba po razredih.



Sintaksa: Definicija razreda

class ClassName:  # Statement>

Sintaksa: Definicija predmeta

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

Razred ustvari uporabniško definiran Nekaj ​​točk o razredu Python:



  • Razredi so ustvarjeni s ključnimi besedami class.
  • Atributi so spremenljivke, ki pripadajo razredu.
  • Atributi so vedno javni in do njih lahko dostopate z operatorjem pika (.). Npr.: Moj razred. Myattribute

Ustvarjanje razreda Python

Tu ključna beseda class označuje, da ustvarjate razred, ki mu sledi ime razreda (v tem primeru pes).

ključ za vstavljanje prenosnika
Python3
class Dog: sound = 'bark'>

Objekt razreda Python

Objekt je primerek razreda. Razred je kot načrt, medtem ko je primerek kopija razreda z dejanske vrednosti . To ni več ideja, to je dejanski pes, kot pes pasme mops, ki je star sedem let. Lahko imate veliko psov, da ustvarite veliko različnih primerkov, a brez razreda kot vodnika bi bili izgubljeni, saj ne bi vedeli, katere informacije so potrebne.

Objekt je sestavljen iz:



  • Država: Predstavljajo ga atributi predmeta. Odraža tudi lastnosti predmeta.
  • Vedenje: Predstavljajo ga metode objekta. Odraža tudi odziv predmeta na druge predmete.
  • Identiteta: Predmetu daje edinstveno ime in omogoča interakcijo enega predmeta z drugimi predmeti.

razred python

Deklariranje predmetov razreda (imenovano tudi instanciranje razreda)

Ko je predmet razreda ustvarjen, se reče, da je razred instanciran. Vsi primerki si delijo atribute in vedenje razreda. Vendar so vrednosti teh atributov, tj. stanja, edinstvene za vsak objekt. Posamezen razred ima lahko poljubno število primerkov.

primer:

python, ki deklarira objekt

Primer razreda in predmeta Python

Ustvarjanje predmeta v Pythonu vključuje instanciranje razreda za ustvarjanje novega primerka tega razreda. Ta proces se imenuje tudi instanciranje objekta.

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

Izhod:

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

V zgornjem primeru je ustvarjen objekt, ki je v bistvu pes po imenu Rodger. Ta razred ima samo dva atributa razreda, ki nam povesta, da je Rodger pes in sesalec.

Pojasnilo:

V tem primeru ustvarjamo razred Dog in ustvarili smo dve spremenljivki razreda attr1 in attr2 . Ustvarili smo metodo z imenom zabava() ki vrne niz I’m a, {attr1} in I’m a, {attr2}. Ustvarili smo objekt razreda Dog in tiskamo na attr1 predmeta. Končno kličemo zabava() funkcijo .

Self Parameter

Ko pokličemo metodo tega predmeta kot myobject.method(arg1, arg2), Python to samodejno pretvori v MyClass.method(myobject, arg1, arg2) – to je vse posebno sebe je približno.

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 sebe Parameter ga ne imenuje Self, namesto njega lahko uporabite katero koli drugo ime. Tu jaz spremenimo v besedo nekdo in rezultat bo enak.

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

Izhod: Izhod za obe kodi bo enak.

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

Pojasnilo:

V tem primeru ustvarjamo razred GFG in ustvarili smo ime in podjetje spremenljivke primerka v konstruktorju. Ustvarili smo metodo z imenom reci_hi() ki vrne niz Pozdravljeni, ime mi je + {ime} + in delam v +{podjetju}+.. Ustvarili smo objekt razreda osebe in posredujemo ime Janez in družba GeeksForGeeks v spremenljivko primerka. Končno kličemo pokaži() razreda.

Izjava o prehodu

Na izvajanje programa ne vpliva prehod neukrepanje izjave. Programu le dovoli, da preskoči ta del kode, ne da bi naredil kar koli. Pogosto se uporablja, ko sintaktične omejitve Pythona zahtevajo veljaven stavek, vendar ni treba izvesti uporabne kode.

Python3
class MyClass: pass>

metoda __init__().

The __vroče__ metoda je podobna konstruktorjem v C++ in Java . Konstruktorji se uporabljajo za inicializacijo stanja objekta. Tako kot metode tudi konstruktor vsebuje zbirko stavkov (tj. navodil), ki se izvedejo v času ustvarjanja objekta. Zažene se takoj, ko je instanciran objekt razreda. Metoda je uporabna za kakršno koli inicializacijo, ki jo želite izvesti s svojim objektom.

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

Izhod:

Hello, my name is Nikhil>

Pojasnilo:

V tem primeru ustvarjamo razred osebe in ustvarili smo razred ime spremenljivka primerka v konstruktorju. Ustvarili smo metodo z imenom say_hi(), ki vrne niz Pozdravljeni, ime mi je {name}. Ustvarili smo objekt razreda osebe in spremenljivki primerka posredujemo ime Nikhil. Končno pokličemo say_hi() razreda.

metoda __str__().

Python ima posebno metodo, imenovano __str__() . ki se uporablja za opredelitev, kako a razred predmet mora biti predstavljen kot niz. Pogosto se uporablja za podajanje objektu berljive besedilne predstavitve, ki je v pomoč pri beleženju, odpravljanju napak ali prikazovanju informacij o objektu uporabnikom. Ko je predmet razreda uporabljen za ustvarjanje niza z uporabo vgrajenih funkcij print() in str(), se __str__() funkcija se uporablja samodejno. Spremenite lahko, kako predmeti a razred so predstavljeni v nizih z definiranjem __str__() metoda.

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

Izhod:

My name is John and I work in GeeksForGeeks.>

Pojasnilo:

V tem primeru ustvarjamo razred z imenom GFG. V razredu ustvarjamo dve spremenljivki primerka ime in podjetje . V metodi __str__() vrnemo ime spremenljivka primerka in podjetje spremenljivka primerka. Končno ustvarimo objekt razreda GFG in pokličemo metodo __str__().

Spremenljivke razreda in primerka

Spremenljivke primerka so za podatke, edinstvene za vsak primerek, spremenljivke razreda pa za atribute in metode, ki si jih delijo vsi primerki razreda. Spremenljivke primerka so spremenljivke, katerih vrednost je dodeljena znotraj konstruktorja ali metode s selfom, medtem ko so spremenljivke razreda spremenljivke, katerih vrednost je dodeljena v razredu.

Definiranje instančnih spremenljivk s pomočjo konstruktorja.

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

Izhod :

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>

Pojasnilo:

Razred z imenom Dog je definiran z a razredna spremenljivka žival, nastavljena na vrvico psa. Spremenljivke razreda si delijo vsi objekti razreda in do njih lahko dostopate z imenom razreda. Razred Dog ima dve instančni spremenljivki pasma in barva. Kasneje ustvarjamo dva objekta pes razred in izpisujemo vrednost obeh objektov s spremenljivko razreda z imenom žival.

Definiranje spremenljivk primerka z običajno metodo:

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

Izhod:

brown>

Pojasnilo:

V tem primeru smo definirali razred z imenom pes in smo ustvarili a razredna spremenljivka žival. Ustvarili smo pasmo spremenljivke primerka v konstruktor . Razred Dog je sestavljen iz dveh metod setColor in getColo r, se uporabljajo za ustvarjanje in inicializacijo spremenljivke primerka ter pridobivanje vrednosti spremenljivke primerka. Izdelali smo predmet pes razreda in vrednost spremenljivke primerka smo nastavili na rjavo, vrednost pa tiskamo v terminalu.