Python OOP's: klasse, object, overerving en constructor met voorbeeld

OOP's in Python

OOP's in Python is een programmeeraanpak die zich richt op het gebruik van objecten en klassen op dezelfde manier als andere algemene programmeertalen. De objecten kunnen elke echte entiteit zijn. Met Python kunnen ontwikkelaars applicaties ontwikkelen met behulp van de OOPs-aanpak, waarbij de nadruk vooral ligt op herbruikbaarheid van code. Het is heel eenvoudig om klassen en objecten in Python te maken.

Wat is een klasse?

Een klasse in Python is een logische groepering van gegevens en functies. Het geeft de vrijheid om datastructuren te creëren die willekeurige inhoud bevatten en dus gemakkelijk toegankelijk zijn.

Bijvoorbeeld voor elke bankmedewerker die de klant wil ophalentails online zou gaan klant klasse, waar al zijn attributen zoals transactie details, opname en storting details, uitstaande schulden, enz. zouden worden vermeld.

Hoe Python-klassen te definiëren

Om klasse te definiëren moet je rekening houden met following punten

Stap 1) In Python worden klassen gedefinieerd door de "Klas" trefwoord

class myClass():

Stap 2) Binnen klassen kunt u functies of methoden definiëren die deel uitmaken van deze klasse

def method1 (self):
   print "Guru99"
def method2 (self,someString): 
   print "Software Testing:" + someString
  • Hier hebben we methode1 gedefinieerd die “Guru99” afdrukt.
  • Een andere methode die we hebben gedefinieerd is methode2 die “Software Testing”+ SomeString afdrukt. SomeString is de variabele die wordt geleverd door de aanroepende methode

Stap 3) Alles in een klasse is ingesprongen, net als de code in de functie, lus, if-instructie, enz. Alles wat niet is ingesprongen, zit niet in de klasse

Python-klassen definiëren

NOTITIE: Over het gebruik van “self” in Python

  • Het zelfargument heeft betrekking op het object zelf. Vandaar het gebruik van het woord zelf. Binnen deze methode verwijst self naar het specifieke exemplaar van dit object waaraan wordt geopereerd.
  • Self is de naam die Python volgens afspraak de voorkeur geeft om de eerste parameter van instantiemethoden in Python aan te geven. Het maakt deel uit van de Python-syntaxis om toegang te krijgen tot leden van objecten

Stap 4) Om een ​​object van de klasse te maken

c = myClass()

Stap 5) Een methode in een klasse aanroepen

c.method1()
    c.method2(" Testing is fun")
  • Merk op dat wanneer we methode1 of methode2 aanroepen, we het trefwoord self niet hoeven op te geven. Dat wordt automatisch voor ons afgehandeld door de Python-runtime.
  • Python-runtime geeft de “self”-waarde door wanneer u een instance-methode aanroept in instance, of u deze nu opzettelijk opgeeft of niet
  • Je hoeft alleen maar rekening te houden met de niet-zelfargumenten

Stap 6) Hier is de volledige code

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

Hoe erfenis werkt

Overerving is een functie die wordt gebruikt bij objectgeoriënteerd programmeren; het verwijst naar het definiëren van een nieuwe klasse met minder of geen wijziging aan een bestaande klasse. De nieuwe klasse wordt gebeld afgeleide klasse en van degene die het erft, wordt de genoemd baseren. Python ondersteunt overerving; het ondersteunt ook meerdere erfenissen. Een klasse kan attributen en gedragsmethoden erven van een andere klasse, de zogenaamde subklasse of erfgenaamklasse.

Python-klassen definiëren

Overervingssyntaxis van Python

class DerivedClass(BaseClass):
    body_of_derived_class

Stap 1) Voer het volgende uitwing code

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

Merk op dat de in childClass, method1 niet is gedefinieerd, maar is afgeleid van de bovenliggende myClass. De uitvoer is “Guru99.”

Stap 2) Verwijder commentaarregel # 8 en 10. Voer de code uit

Nu is methode 1 gedefinieerd in de childClass en wordt de uitvoer “childClass Method1” correct weergegeven.

Stap 3) Ontcommentarieer regel #9. Voer de code uit

U kunt een methode van de bovenliggende klasse aanroepen met behulp van de syntaxis

ParentClassName.MethodName(self)

In ons geval noemen we myClass.method1(self) en wordt Guru99 afgedrukt zoals verwacht

Stap 4) Verwijder commentaarregel #19. Voer de code uit.

Methode 2 van de onderliggende klasse wordt aangeroepen en “childClass method2” wordt zoals verwacht afgedrukt.

Python-constructeurs

Een constructor is een klassefunctie die een object instantieert naar vooraf gedefinieerde waarden.

Het begint met een double laag streepje (_). Het is de __init__() methode

In het onderstaande voorbeeld nemen we de naam van de gebruiker met behulp van de constructor.

class User:
    name = ""

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

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

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

De uitvoer zal zijn:

Welkom bij Guru99, Alex

Python 2 voorbeeld

Bovenstaande codes zijn Python 3-voorbeelden. Als je in Python 2 wilt draaien, overweeg dan following code.

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

Leer onze volgende tutorial over Polymorfisme in Python

Samengevat

“Klasse” is een logische groepering van functies en gegevens. De Python-klasse biedt alle standaardfuncties van Object Oriented Programming.

  • Klasse-overervingsmechanisme
  • Een afgeleide klasse die elke methode van de basisklasse overschrijft
  • Een methode kan de methode van een basisklasse met dezelfde naam aanroepen
  • Python-klassen worden gedefinieerd op trefwoord "klasse" zelf
  • Binnen klassen kunt u functies of methoden definiëren die deel uitmaken van de klasse
  • Alles in een klasse is ingesprongen, net als de code in de functie, lus, if-instructie, enz.
  • Het self-argument in Python verwijst naar het object zelf. Self is de naam die Python volgens afspraak de voorkeur geeft om de eerste parameter van instantiemethoden in Python aan te geven
  • Python-runtime geeft automatisch de “self”-waarde door wanneer u een instance-methode aanroept in instance, of u deze nu opzettelijk opgeeft of niet
  • In Python kan een klasse attributen en gedragsmethoden erven van een andere klasse, de zogenaamde subklasse of erfgenaamklasse.