logo

Python-klasser og -objekter

En klasse er en brugerdefineret blueprint eller prototype, hvorfra objekter oprettes. Klasser giver mulighed for at samle data og funktionalitet sammen. Oprettelse af en ny klasse opretter en ny type objekt, hvilket gør det muligt at lave nye forekomster af den type. Hver klasseinstans kan have attributter knyttet til sig for at opretholde sin tilstand. Klasseforekomster kan også have metoder (defineret af deres klasse) til at ændre deres tilstand.

For at forstå behovet for at skabe en klasse og et objekt i Python lad os overveje et eksempel, lad os sige, at du ønskede at spore antallet af hunde, der kan have forskellige egenskaber som race og alder. Hvis en liste bruges, kan det første element være hundens race, mens det andet element kan repræsentere dens alder. Lad os antage, at der er 100 forskellige hunde, hvordan ville du så vide, hvilket element der formodes at være hvilket? Hvad hvis du ville tilføje andre egenskaber til disse hunde? Dette mangler organisation, og det er det nøjagtige behov for klasser.



Syntaks: Klasse definition

class ClassName:  # Statement>

Syntaks: Objektdefinition

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

Klassen opretter en brugerdefineret Nogle punkter om Python-klassen:



  • Klasser oprettes efter nøgleordsklasse.
  • Attributter er de variable, der hører til en klasse.
  • Attributter er altid offentlige og kan tilgås ved hjælp af prik-operatoren (.). F.eks.: Min klasse. Min egenskab

Oprettelse af en Python-klasse

Her angiver klassenøgleordet, at du opretter en klasse efterfulgt af navnet på klassen (Hund i dette tilfælde).

aws sns
Python3
class Dog: sound = 'bark'>

Genstand for Python-klassen

Et objekt er en forekomst af en klasse. En klasse er som en blueprint, mens en instans er en kopi af klassen med faktiske værdier . Det er ikke en idé længere, det er en rigtig hund, som en hund af racen mops, der er syv år gammel. Du kan have mange hunde til at skabe mange forskellige instanser, men uden klassen som guide, ville du være fortabt, uden at vide hvilke oplysninger der kræves.

Et objekt består af:



  • Stat: Det er repræsenteret af et objekts attributter. Det afspejler også et objekts egenskaber.
  • Opførsel: Det er repræsenteret af et objekts metoder. Det afspejler også et objekts reaktion på andre objekter.
  • Identitet: Det giver et unikt navn til et objekt og gør det muligt for et objekt at interagere med andre objekter.

python klasse

Erklæring af klasseobjekter (kaldes også at instansiere en klasse)

Når et objekt af en klasse er oprettet, siges klassen at være instansieret. Alle forekomsterne deler klassens egenskaber og adfærd. Men værdierne af disse attributter, dvs. tilstanden, er unikke for hvert objekt. En enkelt klasse kan have et hvilket som helst antal forekomster.

Eksempel:

python, der erklærer et objekt

Eksempel på Python-klasse og objekt

Oprettelse af et objekt i Python involverer at instansiere en klasse for at skabe en ny forekomst af den klasse. Denne proces omtales også som objektinstansering.

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

Produktion:

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

I ovenstående eksempel oprettes et objekt, som grundlæggende er en hund ved navn Rodger. Denne klasse har kun to klasseattributter, der fortæller os, at Rodger er en hund og et pattedyr.

Forklaring:

I dette eksempel opretter vi en hundeklasse, og vi har oprettet to klassevariabler attr1 og attr2 . Vi har lavet en metode ved navn sjovt() som returnerer strengen I'm a, {attr1} og I'm a, {attr2}. Vi har lavet et objekt af hundeklassen, og vi trykker på attr1 af objektet. Endelig kalder vi sjovt() fungere .

Selv parameter

Når vi kalder en metode for dette objekt som myobject.method(arg1, arg2), konverteres denne automatisk af Python til MyClass.method(myobject, arg1, arg2) – dette er alt det specielle selv er om.

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

Det Selv Parameter kalder det ikke for at være selv, du kan bruge et hvilket som helst andet navn i stedet for det. Her ændrer vi selvet til ordet nogen, og outputtet bliver det samme.

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

Produktion: Output for begge koder vil være det samme.

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

Forklaring:

I dette eksempel opretter vi en GFG-klasse, og vi har oprettet navn og firma instansvariabler i konstruktøren. Vi har lavet en metode ved navn sig hej() som returnerer strengen Hej mit navn er + {navn} + og jeg arbejder i +{company}+..Vi har oprettet et personklasseobjekt, og vi videregiver navnet John og Kompagni GeeksForGeeks til instansvariablen. Endelig kalder vi at vise() af klassen.

Beståelseserklæring

Programmets udførelse er upåvirket af passere erklæringens passivitet. Det tillader blot programmet at springe forbi den del af koden uden at gøre noget. Det bruges ofte, når de syntaktiske begrænsninger i Python kræver en gyldig sætning, men ingen brugbar kode skal udføres.

Python3
class MyClass: pass>

__init__() metode

Det __hed__ metode ligner konstruktører i C++ og Java . Konstruktører er vant til at initialisere objektets tilstand. Ligesom metoder indeholder en konstruktør også en samling af udsagn (dvs. instruktioner), der udføres på tidspunktet for objektoprettelse. Det kører, så snart et objekt i en klasse er instansieret. Metoden er nyttig til at udføre enhver initialisering, du ønsker at gøre med dit objekt.

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

Produktion:

Hello, my name is Nikhil>

Forklaring:

I dette eksempel opretter vi en Person-klasse, og vi har oprettet en navn instansvariabel i konstruktøren. Vi har lavet en metode kaldet say_hi(), som returnerer strengen Hej, mit navn er {navn}. Vi har oprettet et person-klasseobjekt, og vi videregiver navnet Nikhil til instansvariablen. Til sidst kalder vi say_hi() for klassen.

__str__() metode

Python har en bestemt metode kaldet __str__() . der bruges til at definere, hvordan en klasse objekt skal repræsenteres som en streng. Det bruges ofte til at give et objekt en tekstrepræsentation, der kan læses af mennesker, hvilket er nyttigt til at logge, fejlfinde eller vise brugernes objektinformation. Når et klasseobjekt bruges til at oprette en streng ved hjælp af de indbyggede funktioner print() og str(), __str__() funktionen bruges automatisk. Du kan ændre, hvordan objekter af en klasse er repræsenteret i strenge ved at definere __str__() metode.

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

Produktion:

My name is John and I work in GeeksForGeeks.>

Forklaring:

I dette eksempel opretter vi en klasse ved navn GFG. I klassen opretter vi to instansvariabler navn og firma . I metoden __str__() returnerer vi navn instansvariabel og Selskab instansvariabel. Til sidst opretter vi objektet for GFG-klassen, og vi kalder __str__()-metoden.

Klasse- og instansvariabler

Forekomstvariabler er til data, unikke for hver forekomst, og klassevariabler er for attributter og metoder, der deles af alle forekomster af klassen. Forekomstvariabler er variabler, hvis værdi er tildelt inde i en konstruktør eller metode med selv, mens klassevariabler er variabler, hvis værdi er tildelt i klassen.

Definering af instansvariabler ved hjælp af en konstruktør.

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

Produktion :

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>

Forklaring:

En klasse ved navn Hund er defineret med en klasse variabel dyresæt til snorehunden. Klassevariabler deles af alle objekter i en klasse og kan tilgås ved hjælp af klassenavnet. Hundeklassen har to instansvariabler race og farve. Senere skaber vi to objekter af Hund klasse, og vi udskriver værdien af ​​begge objekter med en klassevariabel ved navn animal.

Definering af instansvariabler ved hjælp af den normale metode:

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

Produktion:

brown>

Forklaring:

I dette eksempel har vi defineret en klasse ved navn Hund og vi har skabt en klasse variabel dyr. Vi har oprettet en instansvariabel race i konstruktør . Klassen Hund består af to metoder sætFarve og getColo r, de bruges til at oprette og initialisere en instansvariabel og hente værdien af ​​instansvariablen. Vi har lavet et objekt af Hund klasse, og vi har sat instansvariablen værdi til brun, og vi udskriver værdien i terminalen.