Python OOP-id: klass, objekt, pärimine ja konstruktor

⚡ Nutikas kokkuvõte

Objektorienteeritud programmeerimine Python korraldab koodi klasside ja objektide ümber, koondades omavahel seotud andmeid ja käitumist. See lähenemisviis näitab, kuidas defineerida klasse, luua objekte, rakendada pärimist ja initsialiseerida atribuute konstruktorite abil.

  • 🔘 Klassi plaan: Klass grupeerib seotud andmed ja meetodid objektide loomise korduvkasutatavaks plaaniks.
  • ☑️ Objektid: Objektid on klassi eksemplarid, millest igaüks salvestab oma atribuudiväärtused.
  • Klasside määratlemine: Märksõna class, taandatud meetodid ja parameeter self defineerivad Python klass.
  • 🧬 Pärand: Tuletatud klass pärib atribuudid ja meetodid baasklassilt ning toetab mitmekordset pärimist.
  • 🛠️ Konstruktorid: Meetod __init__() initsialiseerib iga uue objekti eelnevalt määratletud väärtustega.
  • 🤖 Tehisintellekti olulisus: Masinõppe teegid, näiteks PyTorch modelleerib kihte ja võrke kui Python klassidesse.

Python OOP-id: klass, objekt, pärimine ja konstruktor

OOP sisse Python

OOP sisse Python on programmeerimisviis, mis keskendub objektide ja klasside kasutamisele samamoodi nagu teised üldised programmeerimiskeeled. Objektid võivad olla mis tahes reaalse maailma üksused. Python võimaldab arendajatel arendada rakendusi, kasutades OOP-i lähenemisviisi, keskendudes peamiselt koodi korduvkasutatavusele. Klasside ja objektide loomine on väga lihtne Python.

Mis on klass?

A klass sisse Python on loogiline rühmping andmetest ja funktsioonidest. See annab vabaduse luua suvalise sisuga ja seega hõlpsasti ligipääsetavaid andmestruktuure.

Näiteks iga pangatöötaja, kes soovib veebist kliendiandmeid hankida, läheb aadressile kliendiklass, kus loetletakse kõik selle atribuudid, nagu tehingute üksikasjad, välja- ja sissemaksete üksikasjad, tasumata võlgnevus jne.

Kuidas määratleda Python klassid

Klassi määratlemiseks peate arvestama järgmiste punktidega

Step 1) In Python, klassid on määratletud "Klass" võtmesõna

class myClass():

Step 2) Klasside sees saate määratleda selle klassi kuuluvaid funktsioone või meetodeid

def method1 (self):
   print "Guru99"
def method2 (self,someString): 
   print "Software Testing:" + someString
  • Siin oleme defineerinud meetodi1, mis prindib „Guru99. "
  • Teine meetod, mille oleme defineerinud, on meetod2, mis prindib "Tarkvara testimine" + SomeString. SomeString on kutsumismeetodi pakutav muutuja

Step 3) Kõik klassis on taandega, nagu ka kood funktsioonis, tsüklis, if-lauses jne. Kõik, mida pole taandes, ei ole klassis

Määratle Python klassid

MÄRKUSED: "ise" kasutamise kohta Python

  • Self-argument viitab objektile endale. Sellest ka sõna self kasutamine. Seega viitab self selle meetodi sees selle objekti konkreetsele eksemplarile, millega opereeritakse.
  • Self on nimi, mida eelistab kokkuleppeliselt Pythons, et näidata eksemplarimeetodite esimest parameetrit Python. See on osa Python süntaks objektide liikmetele juurdepääsuks

Step 4) Teha klassi objekt

c = myClass()

Step 5) Meetodi kutsumine klassis

c.method1()
    c.method2(" Testing is fun")
  • Pane tähele, et meetodi1 või meetodi2 kutsumisel ei pea me ise märksõna esitama. Selle teeb meie eest automaatselt meetod Python tööaeg.
  • Python käitusaeg edastab "ise" väärtuse, kui kutsute eksemplari meetodi sisse, olenemata sellest, kas esitate selle tahtlikult või mitte
  • Peate lihtsalt hoolima mitte-iseargumentidest

Step 6) Siin on täielik kood

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

Kuidas pärimine toimib

Pärand on objektorienteeritud programmeerimises kasutatav funktsioon; see viitab uue klassi määratlemisele olemasoleva klassi vähem või ilma muudatusteta. Uut klassi kutsutakse tuletatud klass ja seda, mille see pärib, nimetatakse baas. Python toetab pärimist; see toetab ka mitu pärandit. Klass võib pärida atribuute ja käitumismeetodeid teiselt klassilt, mida nimetatakse alamklassiks või pärijaklassiks.

Kuidas pärimine toimib Python

Python Pärimise süntaks

class DerivedClass(BaseClass):
    body_of_derived_class

Step 1) Käivitage järgmine kood

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

Pane tähele, et meetod childClassis ei ole defineeritud, vaid see on tuletatud ülemklassist myClass. Väljund on „Guru99. "

Step 2) Tühista rida 8 ja 10. Käivitage kood

Nüüd on lapseklassis defineeritud meetod 1 ja väljund “childClass Method1” on õigesti näidatud.

Step 3) Tühistage rida #9. Käivitage kood

Süntaksi abil saate kutsuda vanemklassi meetodit

ParentClassName.MethodName(self)

Meie puhul kutsume välja myClass.method1(self) ja Guru99 trükitakse ootuspäraselt

Samm 4) Kommenteerimata rida #19. Käivitage kood.

Kutsutakse välja alamklassi meetod 2 ja “childClass method2” trükitakse ootuspäraselt.

Python Konstruktorid

Konstruktor on klassifunktsioon, mis loob objekti eelmääratletud väärtustele.

See algab kahekordse alakriipsuga (_). See on __init__() meetod.

Allolevas näites võtame konstruktori abil kasutaja nime.

class User:
    name = ""

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

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

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

Väljund saab olema:

Tere tulemast Guru99, Aleks

Python 2 Näide

Ülaltoodud koodid on Python 3 näidet, kui soovite sisse joosta Python 2 palun kaaluge järgmist koodi.

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

Tutvuge meie järgmise õpetusega Polümorfism sisse Python

KKK

Klass on atribuute ja meetodeid defineeriv plaan, samas kui objekt on sellest klassist ehitatud konkreetne eksemplar. Üks klass saab luua palju objekte, igaüks neist hoiab...ping oma andmed.

Python Objektorienteeritud programmeerimine tugineb neljale sambale: kapseldamine (andmete sidumine meetoditega), abstractsioon (keerukuse varjamine), pärimine (baasklassi taaskasutamine) ja polümorfism (üks liides, palju vorme).

Klassimuutujad deklareeritakse klassi kehas ja neid jagatakse iga eksemplari vahel. Eksemplari muutujad omistatakse __init__ sees, kasutades self-i, ja need kuuluvad ainult ühele objektile.

Funktsioon super() tagastab ülemklassile proksi, võimaldades lapsel kutsuda ülemmeetodeid või konstruktorit ilma seda otseselt nimetamata. Päritud atribuutide initsialiseerimiseks kirjutatakse see sageli kujul super().__init__().

Kapseldamine piirab otsest juurdepääsu objekti sisemistele andmetele. Python, lisage atribuudi ette üks alakriips (_name) kaitstud atribuudina või topelt alakriips (__name) nime moonutamiseks.

Jah. A Python Klass saab pärida mitmelt vanemalt, näiteks klass Child(A, B). Python lahendab duplikaatmeetodite nimed meetodi lahendamise järjekorra (MRO) abil, mida kontrollitakse meetodiga mro().

Objektorienteeritud programmeerimine on tehisintellekti ja masinõppe raamistike keskmes. Teegid nagu PyTorch ja scikit õpivad mudelvõrke, kihte ja hindajaid klassidena, nii et saate neid alamklassidesse jagada ja mudelite loomiseks uuesti kasutada.

Jah. GitHub Copilot ja tehisintellekti assistendid genereerivad Python klassid, konstruktorid ja pärimine lühikesest käsurealt. Need automatiseerivad korduvaid mallilauseid, kuigi väljundit tuleks õige loogika osas üle vaadata.

Võta see postitus kokku järgmiselt: