logo

Třídy a objekty Pythonu

Třída je uživatelsky definovaný plán nebo prototyp, ze kterého jsou vytvářeny objekty. Třídy poskytují prostředky pro sdružování dat a funkcí dohromady. Vytvořením nové třídy se vytvoří nový typ objektu, který umožňuje vytvářet nové instance tohoto typu. Ke každé instanci třídy mohou být připojeny atributy pro udržení jejího stavu. Instance třídy mohou mít také metody (definované svou třídou) pro úpravu jejich stavu.

Abychom pochopili potřebu vytvoření třídy a objektu v Krajta Vezměme si příklad, řekněme, že jste chtěli sledovat počet psů, kteří mohou mít různé atributy, jako je plemeno a věk. Pokud je použit seznam, první prvek může být plemeno psa, zatímco druhý prvek může představovat jeho věk. Předpokládejme, že existuje 100 různých psů, jak byste pak věděli, který prvek má být který? Co kdybyste těmto psům chtěli přidat další vlastnosti? To postrádá organizaci a je to přesná potřeba tříd.



Syntax: Definice třídy

class ClassName:  # Statement>

Syntax: Definice objektu

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

Třída vytvoří uživatelem definovanou Některé body třídy Python:



  • Třídy jsou vytvářeny klíčovým slovem class.
  • Atributy jsou proměnné, které patří do třídy.
  • Atributy jsou vždy veřejné a lze k nim přistupovat pomocí operátoru tečka (.). Např.: Moje třída.Můj atribut

Vytvoření třídy Python

Zde klíčové slovo class označuje, že vytváříte třídu následovanou názvem třídy (v tomto případě Pes).

formátovat řetězec java
Python3
class Dog: sound = 'bark'>

Objekt třídy Python

Objekt je instancí třídy. Třída je jako plán, zatímco instance je kopií třídy s skutečné hodnoty . Už to není nápad, je to skutečný pes, jako pes plemene mops, kterému je sedm let. Můžete mít mnoho psů k vytvoření mnoha různých instancí, ale bez třídy jako průvodce byste byli ztraceni, aniž byste věděli, jaké informace jsou vyžadovány.

Objekt se skládá z:



  • Stát: Je reprezentován atributy objektu. Odráží také vlastnosti objektu.
  • Chování: Je reprezentován metodami objektu. Odráží také reakci objektu na jiné objekty.
  • Identita: Přiděluje objektu jedinečný název a umožňuje interakci jednoho objektu s jinými objekty.

třída python

Deklarování objektů třídy (také nazývané vytváření instance třídy)

Když je vytvořen objekt třídy, říká se, že třída je vytvořena. Všechny instance sdílejí atributy a chování třídy. Ale hodnoty těchto atributů, tedy stavu, jsou pro každý objekt jedinečné. Jedna třída může mít libovolný počet instancí.

Příklad:

python deklarující objekt

Příklad třídy a objektu Pythonu

Vytvoření objektu v Pythonu zahrnuje vytvoření instance třídy pro vytvoření nové instance této třídy. Tento proces se také nazývá instanciace objektů.

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

Výstup:

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

Ve výše uvedeném příkladu je vytvořen objekt, kterým je v podstatě pes jménem Rodger. Tato třída má pouze dva atributy třídy, které nám říkají, že Rodger je pes a savec.

Vysvětlení :

V tomto příkladu vytváříme třídu Pes a vytvořili jsme dvě proměnné třídy attr1 a attr2 . Vytvořili jsme metodu s názvem zábava() což vrátí řetězec I'm a, {attr1} a I'm a, {attr2}. Vytvořili jsme objekt třídy Pes a tiskneme na attr1 objektu. Nakonec voláme na zábava() funkce .

Vlastní parametr

Když zavoláme metodu tohoto objektu jako myobject.method(arg1, arg2), Python ji automaticky převede na MyClass.method(myobject, arg1, arg2) – to je vše speciální je o.

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 Parametr neříká, že je to Self, místo něj můžete použít jakékoli jiné jméno. Zde změníme já na slovo někdo a výstup bude stejný.

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

Výstup: Výstup pro oba kódy bude stejný.

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

Vysvětlení:

V tomto příkladu vytváříme třídu GFG a vytvořili jsme ji jméno a společnost instance proměnné v konstruktoru. Vytvořili jsme metodu s názvem pozdravit() který vrací řetězec Ahoj jmenuji se + {jméno} + a pracuji v +{společnosti}+..Vytvořili jsme objekt třídy person a předáváme jméno John and Company GeeksForGeeks do proměnné instance. Nakonec voláme na ukázat() třídy.

Pass Statement

Provádění programu není ovlivněno složit nečinnost prohlášení. Pouze umožňuje programu přeskočit tuto část kódu, aniž by cokoliv udělal. Často se používá, když syntaktická omezení Pythonu vyžadují platný příkaz, ale nesmí být proveden žádný užitečný kód.

Python3
class MyClass: pass>

__init__() metoda

The __horký__ metoda je podobná konstruktorům v C++ a Jáva . Konstruktory se používají k inicializaci stavu objektu. Stejně jako metody obsahuje konstruktor také kolekci příkazů (tj. instrukcí), které se provádějí v okamžiku vytvoření objektu. Spustí se, jakmile je vytvořena instance objektu třídy. Metoda je užitečná k provedení jakékoli inicializace, kterou chcete s objektem provést.

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

Výstup:

Hello, my name is Nikhil>

Vysvětlení:

V tomto příkladu vytváříme třídu Osoba a vytvořili jsme a název proměnná instance v konstruktoru. Vytvořili jsme metodu pojmenovanou jako say_hi(), která vrací řetězec Ahoj, jmenuji se {jméno}. Vytvořili jsme objekt třídy person a do proměnné instance předáme jméno Nikhil. Nakonec voláme say_hi() třídy.

metoda __str__().

Python má zvláštní metodu tzv __str__() . která se používá k definování toho, jak a třída objekt by měl být reprezentován jako řetězec. Často se používá k tomu, aby objekt získal lidsky čitelnou textovou reprezentaci, což je užitečné pro protokolování, ladění nebo zobrazování informací o objektu uživatelům. Když je objekt třídy použit k vytvoření řetězce pomocí vestavěných funkcí print() a str(), je __str__() funkce se použije automaticky. Můžete změnit, jak objekty a třída jsou reprezentovány v řetězcích definováním __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)>

Výstup:

My name is John and I work in GeeksForGeeks.>

Vysvětlení:

V tomto příkladu vytváříme třídu s názvem GFG. Ve třídě vytváříme dvě proměnné instance jméno a společnost . V metodě __str__() vracíme název proměnná instance a společnost proměnná instance. Nakonec vytváříme objekt třídy GFG a voláme metodu __str__().

Proměnné třídy a instance

Proměnné instance jsou pro data, jedinečná pro každou instanci a proměnné třídy jsou pro atributy a metody sdílené všemi instancemi třídy. Proměnné instance jsou proměnné, jejichž hodnota je přiřazena uvnitř konstruktoru nebo metody s self, zatímco proměnné třídy jsou proměnné, jejichž hodnota je přiřazena ve třídě.

Definování proměnných instance pomocí 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)>

Výstup :

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>

Vysvětlení:

Třída s názvem Pes je definována pomocí a třídní proměnná zvířecí sada na provázkového psa. Proměnné třídy jsou sdíleny všemi objekty třídy a lze k nim přistupovat pomocí názvu třídy. Třída pes má dvě proměnné instance plemeno a barva. Později vytvoříme dva objekty Pes class a tiskneme hodnotu obou objektů s proměnnou třídy s názvem zvíře.

Definování proměnných instance pomocí normální metody:

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

Výstup:

brown>

Vysvětlení:

V tomto příkladu jsme definovali třídu s názvem Pes a vytvořili jsme a třídní proměnná zvíře. Vytvořili jsme instanční proměnné plemeno v konstruktér . Třída Pes se skládá ze dvou metod setColor a getColo r, používají se pro vytvoření a inicializaci proměnné instance a načtení hodnoty proměnné instance. Udělali jsme objekt Pes třídy a hodnotu proměnné instance jsme nastavili na hnědou a hodnotu vytiskneme v terminálu.