Python OOP-ovi: Klasa, Objekt, Nasljeđivanje i Konstruktor

⚡ Pametni sažetak

Objektno orijentirano programiranje u Python organizira kod oko klasa i objekata, grupirajući povezane podatke i ponašanje. Ovaj pristup pokazuje kako definirati klase, stvarati objekte, primijeniti nasljeđivanje i inicijalizirati atribute pomoću konstruktora.

  • 🔘 Nacrt razreda: Klasa grupira povezane podatke i metode u nacrt za višekratnu upotrebu za stvaranje objekata.
  • ☑️ objekti: Objekti su instance klase, a svaki pohranjuje vlastite vrijednosti atributa.
  • ✅ Definiranje klasa: Ključna riječ klase, uvučene metode i parametar self definiraju Python klase.
  • 🧬 nasljedstvo: Izvedena klasa nasljeđuje atribute i metode iz osnovne klase i podržava višestruko nasljeđivanje.
  • 🛠️ Konstruktori: Metoda __init__() inicijalizira svaki novi objekt s unaprijed definiranim vrijednostima.
  • 🤖 Relevantnost umjetne inteligencije: Biblioteke za strojno učenje poput Py-aTorslojevi i mreže ch modela kao Python klase.

Python OOP-ovi: Klasa, Objekt, Nasljeđivanje i Konstruktor

OOPs in Python

OOPs in Python je programski pristup koji se fokusira na korištenje objekata i klasa kao i drugi opći programski jezici. Objekti mogu biti bilo koji entiteti iz stvarnog svijeta. Python omogućuje razvojnim programerima da razvijaju aplikacije koristeći OOP pristup s glavnim fokusom na ponovnu upotrebu koda. Vrlo je lako kreirati klase i objekte Python.

Što je klasa?

Razred u Python je logična grupaping podataka i funkcija. Daje slobodu stvaranja struktura podataka koje sadrže proizvoljan sadržaj i stoga su lako dostupne.

Na primjer, bilo koji bankovni zaposlenik koji želi dohvatiti podatke o klijentu putem interneta otišao bi na klasa kupaca, gdje bi bili navedeni svi njegovi atributi poput detalja transakcije, detalja o isplatama i uplatama, nepodmirenog duga itd.

Kako definirati Python Nastava

Za definiranje klase morate uzeti u obzir sljedeće točke

Korak 1) In Python, klase su definirane pomoću “Razred” ključne riječi

class myClass():

Korak 2) Unutar klasa možete definirati funkcije ili metode koje su dio ove klase

def method1 (self):
   print "Guru99"
def method2 (self,someString): 
   print "Software Testing:" + someString
  • Ovdje smo definirali metodu1 koja ispisuje „Guru99.”
  • Još jedna metoda koju smo definirali je metoda2 koja ispisuje “Testiranje softvera”+ Neki niz. SomeString je varijabla koju daje pozivajuća metoda

Korak 3) Sve u klasi je uvučeno, baš kao kod u funkciji, petlji, if naredbi itd. Sve što nije uvučeno nije u klasi

Definirati Python Nastava

BILJEŠKA: O korištenju "sebe" u Python

  • Samoargument se odnosi na sam objekt. Stoga se koristi riječ self. Dakle, unutar ove metode, self će se odnositi na specifičnu instancu ovog objekta na kojoj se radi.
  • Self je ime koje prema konvenciji preferira Pythons za označavanje prvog parametra metoda instance u Python, To je dio Python sintaksa za pristup članovima objekata

Korak 4) Napraviti objekt klase

c = myClass()

Korak 5) Pozvati metodu u klasi

c.method1()
    c.method2(" Testing is fun")
  • Primijetite da kada pozovemo metodu1 ili metodu2, ne moramo navesti ključnu riječ za sebe. To automatski rješava za nas Python vrijeme izvođenja.
  • Python runtime će proslijediti "self" vrijednost kada pozovete metodu instance na instanci, bez obzira jeste li je unijeli namjerno ili ne
  • Samo se morate brinuti o ne-jastim argumentima

Korak 6) Ovdje je kompletan kod

# Example file for working with classes
class myClass():
  def method1(self):
      print("Guru99")
        
  def method2(self,someString):    
      print("Software Testing:" + someString)
  
      
def main():           
  # exercise the class methods
  c = myClass ()
  c.method1()
  c.method2(" Testing is fun")
  
if __name__== "__main__":
  main()

Kako funkcionira nasljeđivanje

Nasljeđivanje je značajka koja se koristi u objektno orijentiranom programiranju; odnosi se na definiranje nove klase s manje ili bez izmjena postojeće klase. Nova klasa se zove izvedena klasa a od one koju nasljeđuje naziva se baza. Python podržava nasljedstvo; također podržava višestruko nasljeđivanje. Klasa može naslijediti atribute i metode ponašanja od druge klase koja se naziva podklasa ili klasa nasljednica.

Kako nasljeđivanje funkcionira u Python

Python Sintaksa nasljeđivanja

class DerivedClass(BaseClass):
    body_of_derived_class

Korak 1) Pokrenite sljedeći kod

# Example file for working with classes
class myClass():
  def method1(self):
      print("Guru99")
        
  
class childClass(myClass):
  #def method1(self):
        #myClass.method1(self);
        #print ("childClass Method1")
        
  def method2(self):
        print("childClass method2")     
         
def main():           
  # exercise the class methods
  c2 = childClass()
  c2.method1()
  #c2.method2()

if __name__== "__main__":
  main()

Primijetite da u childClass, method1 nije definirana, već je izvedena iz roditeljske myClass. Izlaz je "Guru99.”

Korak 2) Odkomentirajte redak # 8 i 10. Pokrenite kod

Sada je metoda 1 definirana u childClass i izlaz “childClass Method1” je ispravno prikazan.

Korak 3) Odkomentirajte redak #9. Pokrenite kod

Možete pozvati metodu nadređene klase pomoću sintakse

ParentClassName.MethodName(self)

U našem slučaju, pozivamo myClass.method1(self) i GuruBroj 99 je ispisan kako se očekivalo

Korak 4) Odkomentirajte redak #19. Pokrenite kod.

Poziva se metoda 2 podređene klase i ispisuje se "childClass method2" prema očekivanjima.

Python Konstruktori

Konstruktor je funkcija klase koja instancira objekt prema unaprijed definiranim vrijednostima.

Počinje dvostrukom podvlakom (_). To je metoda __init__()

U donjem primjeru uzimamo ime korisnika pomoću konstruktora.

class User:
    name = ""

    def __init__(self, name):
        self.name = name

    def sayHello(self):
        print("Welcome to Guru99, " + self.name)

User1 = User("Alex")
User1.sayHello()

Izlaz će biti:

Dobrodošli u Guru99, Alex

Python 2 Primjer

Gornji kodovi su Python 3 primjera, ako želite ući Python 2 razmotrite sljedeći kod.

# How to define Python classes
# Example file for working with classes
class myClass():
  def method1(self):
      print "Guru99"
        
  def method2(self,someString):    
      print "Software Testing:" + someString
      
   
      
def main():           
  # exercise the class methods
  c = myClass ()
  c.method1()
  c.method2(" Testing is fun")
  
if __name__== "__main__":
  main()


#How Inheritance works
# Example file for working with classes
class myClass():
  def method1(self):
      print "Guru99"
        
      
class childClass(myClass):
  #def method1(self):
        #myClass.method1(self);
        #print "childClass Method1" 
        
  def method2(self):
        print "childClass method2"     
         
def main():           
  # exercise the class methods
  c2 = childClass()
  c2.method1()
  #c2.method2()

if __name__== "__main__":
  main()

Saznajte o našem sljedećem vodiču Polimorfizam u Python

Pitanja i odgovori

Klasa je nacrt koji definira atribute i metode, dok je objekt konkretna instanca izgrađena iz te klase. Jedna klasa može stvoriti mnogo objekata, a svaki od njihping vlastitih podataka.

Python Objektno orijentirano programiranje počiva na četiri stupa: enkapsulacija (sdruživanje podataka s metodama), abstraccija (skrivanje složenosti), nasljeđivanje (ponovna upotreba osnovne klase) i polimorfizam (jedno sučelje, mnogo oblika).

Varijable klase deklariraju se unutar tijela klase i dijele ih sve instance. Varijable instance dodjeljuju se unutar __init__ pomoću self i pripadaju samo jednom objektu.

Funkcija super() vraća posredničku vrijednost roditeljskoj klasi, omogućujući podređenom razredu da pozove roditeljske metode ili konstruktor bez izravnog imenovanja. Često se piše kao super().__init__() za inicijalizaciju naslijeđenih atributa.

Enkapsulacija ograničava izravan pristup internim podacima objekta. U Python, ispred atributa dodajte jednu podcrtu (_name) kao zaštićeno ili dvostruku podcrtu (__name) za izmjenu imena.

Da. A Python Klasa može nasljeđivati ​​od nekoliko roditelja, kao što je klasa Child(A, B). Python razrješava duplicirana imena metoda pomoću redoslijeda razrješenja metoda (MRO), pregledanog metodom mro().

Objektno orijentirano programiranje je ključno za okvire umjetne inteligencije i strojnog učenja. Biblioteke poput Py-aTorch i scikit-learn modeliraju mreže, slojeve i estimatore kao klase, tako da ih možete podklasificirati i ponovno koristiti za izgradnju modela.

Da. GitHub Copilot i AI asistenti generiraju Python klase, konstruktore i nasljeđivanje iz kratkog prompta. Oni automatiziraju ponavljajuće standardne postavke, iako biste trebali pregledati izlaz radi ispravne logike.

Sažmite ovu objavu uz: