Python OOP:er: Klass, objekt, arv och konstruktor

โšก Smart sammanfattning

Objektorienterad programmering i Python organiserar kod kring klasser och objekt, och buntar samman relaterad data och beteende. Denna metod visar hur man definierar klasser, skapar objekt, tillรคmpar arv och initierar attribut med konstruktorer.

  • ๐Ÿ”˜ Klassritning: En klass grupperar relaterade data och metoder i en รฅteranvรคndbar ritning fรถr att skapa objekt.
  • โ˜‘๏ธ Objekt: Objekt รคr instanser av en klass, dรคr vart och ett lagrar sina egna attributvรคrden.
  • โœ… Definiera klasser: Nyckelordet class, de indragna metoderna och parametern self definierar en Python klass.
  • ๐Ÿงฌ Arv: En hรคrledd klass รคrver attribut och metoder frรฅn en basklass och stรถder multipel arv.
  • ๐Ÿ› ๏ธ Konstruktรถrer: Metoden __init__() initierar varje nytt objekt med fรถrdefinierade vรคrden.
  • ๐Ÿค– AI-relevans: Maskininlรคrningsbibliotek som PyTorch-modelllager och nรคtverk som Python klasser.

Python OOP:er: Klass, objekt, arv och konstruktor

OOPs in Python

OOPs in Python รคr ett programmeringssรคtt som fokuserar pรฅ att anvรคnda objekt och klasser pรฅ samma sรคtt som andra allmรคnna programmeringssprรฅk. Objekten kan vara alla verkliga enheter. Python tillรฅter utvecklare att utveckla applikationer med hjรคlp av OOPs-metoden med stort fokus pรฅ kodรฅteranvรคndbarhet. Det รคr vรคldigt enkelt att skapa klasser och objekt i Python.

Vad รคr en klass?

En klass i Python รคr en logisk gruppping av data och funktioner. Det ger friheten att skapa datastrukturer som innehรฅller godtyckligt innehรฅll och dรคrmed รคr lรคttillgรคngliga.

Till exempel, fรถr alla bankanstรคllda som vill hรคmta kunduppgifterna online skulle gรฅ till kundklass, dรคr alla dess attribut som transaktionsdetaljer, uttags- och insรคttningsdetaljer, utestรฅende skuld etc. skulle listas.

Hur man definierar Python klasser

Fรถr att definiera klass mรฅste du รถvervรคga fรถljande punkter

Steg 1) In Python, klasser definieras av "Klass" sรถkord

class myClass():

Steg 2) Inuti klasser kan du definiera funktioner eller metoder som ingรฅr i denna klass

def method1 (self):
   print "Guru99"
def method2 (self,someString): 
   print "Software Testing:" + someString
  • Hรคr har vi definierat metod1 som skriver ut โ€œGuru99.โ€
  • En annan metod som vi har definierat รคr metod2 som skriver ut "Software Testing"+ SomeString. SomeString รคr variabeln som tillhandahรฅlls av anropsmetoden

Steg 3) Allt i en klass รคr indraget, precis som koden i funktionen, loopen, if-satsen, etc. Allt som inte รคr indraget finns inte i klassen

definiera Python klasser

ANMร„RKNINGAR: Om att anvรคnda "sjรคlv" i Python

  • Sjรคlvargumentet refererar till sjรคlva objektet. Dรคrav anvรคndningen av ordet self. Sรฅ inom den hรคr metoden kommer self att referera till den specifika instansen av detta objekt som opereras pรฅ.
  • Sjรคlv รคr namnet som fรถredras av konventionen Pythons fรถr att indikera den fรถrsta parametern av instansmetoder i Python. Det รคr en del av Python syntax fรถr att komma รฅt medlemmar av objekt

Steg 4) Att gรถra ett objekt av klassen

c = myClass()

Steg 5) Att anropa en metod i en klass

c.method1()
    c.method2(" Testing is fun")
  • Observera att nรคr vi anropar metod1 eller metod2 behรถver vi inte ange sjรคlvnyckelordet. Det hanteras automatiskt รฅt oss av Python kรถrning.
  • Python runtime kommer att skicka "sjรคlv" vรคrde nรคr du anropar en instansmetod pรฅ i instans, oavsett om du tillhandahรฅller den avsiktligt eller inte
  • Du mรฅste bara bry dig om icke-jag-argumenten

Steg 6) Hรคr รคr den fullstรคndiga koden

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

Hur arv fungerar

Arv รคr en funktion som anvรคnds i objektorienterad programmering; det hรคnvisar till att definiera en ny klass med mindre eller ingen modifiering av en befintlig klass. Den nya klassen heter hรคrledd klass och frรฅn en som den รคrver kallas den bas. Python stรถder arv; den stรถder ocksรฅ flera arv. En klass kan รคrva attribut och beteendemetoder frรฅn en annan klass som kallas underklass eller arvingsklass.

Hur arv fungerar i Python

Python Arvssyntax

class DerivedClass(BaseClass):
    body_of_derived_class

Steg 1) Kรถr fรถljande 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()

Observera att metod1 i childClass inte รคr definierad utan hรคrledd frรฅn den รถverordnade myClass. Utdata รคr โ€œGuru99.โ€

Steg 2) Avkommentera rad #8 & 10. Kรถr koden

Nu รคr metod 1 definierad i childClass och utgรฅngen "childClass Method1" visas korrekt.

Steg 3) Avkommentera rad #9. Kรถr koden

Du kan anropa en metod fรถr den รถverordnade klassen med hjรคlp av syntaxen

ParentClassName.MethodName(self)

I vรฅrt fall anropar vi myClass.method1(self) och Guru99 รคr utskrivet som fรถrvรคntat

steg 4) Avkommentar rad #19. Kรถr koden.

Metod 2 fรถr barnklassen anropas och "childClass method2" skrivs ut som fรถrvรคntat.

Python konstruktรถrer

En konstruktor รคr en klassfunktion som instansierar ett objekt till fรถrdefinierade vรคrden.

Den bรถrjar med ett dubbelt understreck (_). Den anvรคnder __init__()-metoden.

I exemplet nedan tar vi namnet pรฅ anvรคndaren som anvรคnder konstruktorn.

class User:
    name = ""

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

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

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

Produktionen kommer att vara:

Vรคlkommen till Guru99, Alex

Python 2 Exempel

Ovanstรฅende koder รคr Python 3 exempel, om du vill springa in Python 2 รถvervรคg fรถljande 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()

Lรคr dig vรฅr nรคsta handledning om Polymorfism i Python

Vanliga frรฅgor

En klass รคr en ritning som definierar attribut och metoder, medan ett objekt รคr en konkret instans byggd frรฅn den klassen. En klass kan skapa mรฅnga objekt, dรคr varje objekt...ping sina egna uppgifter.

Python Objektorienterad programmering vilar pรฅ fyra pelare: inkapsling (bundling av data med metoder), abstraction (dรถlja komplexitet), arv (รฅteranvรคndning av en basklass) och polymorfism (ett grรคnssnitt, mรฅnga former).

Klassvariabler deklareras inuti klasskroppen och delas av varje instans. Instansvariabler tilldelas inuti __init__ med hjรคlp av self och tillhรถr endast ett enda objekt.

Funktionen super() returnerar en proxy till fรถrรคlderklassen, vilket lรฅter ett barn anropa fรถrรคldermetoderna eller konstruktorn utan att namnge den direkt. Den skrivs ofta som super().__init__() fรถr att initiera รคrvda attribut.

Inkapsling begrรคnsar direkt รฅtkomst till ett objekts interna data. Python, prefixa ett attribut med ett enkelt understreck (_name) som skyddat, eller ett dubbelt understreck (__name) fรถr namnfรถrvrรคngning.

Ja. A Python klassen kan รคrva frรฅn flera fรถrรคldrar, sรฅsom klass Child(A, B). Python lรถser dubbletter av metodnamn med hjรคlp av Method Resolution Order (MRO), inspekterad med mro()-metoden.

Objektorienterad programmering รคr central fรถr AI och maskininlรคrningsramverk. Bibliotek som PyTorch och scikit-learn modellnรคtverk, lager och estimatorer som klasser, sรฅ du kan subklassificera och รฅteranvรคnda dem fรถr att bygga modeller.

Ja. GitHub Copilot och AI-assistenter genererar Python klasser, konstruktorer och arv frรฅn en kort prompt. De automatiserar repetitiv standardbeskrivning, men du bรถr granska utdata fรถr korrekt logik.

Sammanfatta detta inlรคgg med: