Python OOP: Klasse, Object, Overerving en Constructor

⚡ Slimme samenvatting

Objectgeoriënteerd programmeren in Python Deze aanpak organiseert code rondom klassen en objecten, waarbij gerelateerde data en gedrag worden gebundeld. Het laat zien hoe je klassen definieert, objecten aanmaakt, overerving toepast en attributen initialiseert met constructors.

  • 🔘 Klasopzet: Een klasse groepeert gerelateerde gegevens en methoden in een herbruikbaar sjabloon voor het creëren van objecten.
  • ☑️ Voorwerpen: Objecten zijn instanties van een klasse, waarbij elke instantie zijn eigen attribuutwaarden opslaat.
  • ✅ Klassen definiëren: Het sleutelwoord 'class', ingesprongen methoden en de parameter 'self' definiëren een Python klasse.
  • 🧬 Erfenis: Een afgeleide klasse erft eigenschappen en methoden van een basisklasse en ondersteunt meervoudige overerving.
  • ️ Constructeurs: De __init__() methode initialiseert elk nieuw object met vooraf gedefinieerde waarden.
  • 🤖 Relevantie van AI: Machine learning-bibliotheken zoals PyTorch model lagen en netwerken als Python klassen.

Python OOP: Klasse, Object, Overerving en Constructor

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. Python stelt ontwikkelaars in staat applicaties te ontwikkelen met behulp van de OOPs-aanpak, met de nadruk op herbruikbaarheid van code. Het is heel eenvoudig om klassen en objecten te maken Python.

Wat is een klasse?

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

Voor elke bankmedewerker die bijvoorbeeld online de klantgegevens wil ophalen, zou dit naar klant klasse, waar alle kenmerken zoals transactiegegevens, opname- en stortingsgegevens, openstaande schulden, enz. worden vermeld.

Hoe te definiëren? Python klassen

Om een ​​klasse te definiëren, moet u rekening houden met de volgende punten

Stap 1) In Python, klassen worden 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 " afdrukt"Guru99.”
  • 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

Define Python klassen

NOTITIE: Over het gebruik van “zelf” in Python

  • Het argument 'self' verwijst naar het object zelf. Vandaar het gebruik van het woord 'self'. Binnen deze methode verwijst 'self' dus naar de specifieke instantie van dit object waarop de bewerking wordt uitgevoerd.
  • Zelf is de naam die volgens afspraak de voorkeur heeft Pythons om de eerste parameter van instantiemethoden in aan te geven Python. Het is onderdeel 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 we bij het aanroepen van methode1 of methode2 het sleutelwoord 'self' niet hoeven mee te geven. Dat wordt automatisch voor ons afgehandeld. Python looptijd.
  • Python runtime zal de “self”-waarde doorgeven 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 erfenis; het ondersteunt ook meerdere erfenissen. Een klasse kan attributen en gedragsmethoden erven van een andere klasse, de zogenaamde subklasse of erfgenaamklasse.

Hoe overerving werkt in Python

Python Overerving syntaxis

class DerivedClass(BaseClass):
    body_of_derived_class

Stap 1) Voer de volgende code uit

# 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 in childClass de methode method1 niet is gedefinieerd, maar dat deze is afgeleid van de parent 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 roepen we myClass.method1(self) aan en Guru99 wordt 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 constructors

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

Het begint met een dubbele underscore (_). 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 wilt binnenlopen Python 2. Houd rekening met de volgende 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

Veelgestelde vragen

Een klasse is een blauwdruk die attributen en methoden definieert, terwijl een object een concrete instantie is die van die klasse is gemaakt. Eén klasse kan veel objecten creëren, die elk hun eigen eigenschappen behouden.ping eigen gegevens.

Python Objectgeoriënteerd programmeren rust op vier pijlers: inkapseling (het bundelen van data met methoden), abstrahering en abstractie.tractie (het verbergen van complexiteit), overerving (het hergebruiken van een basisklasse) en polymorfisme (één interface, vele vormen).

Klassevariabelen worden binnen de klassebody gedeclareerd en gedeeld door elke instantie. Instantievariabelen worden toegewezen in de `__init__`-methode met behulp van `self` en behoren slechts tot één object.

De `super()`-functie retourneert een proxy naar de ouderklasse, waardoor een afgeleide klasse de methoden of constructor van de ouderklasse kan aanroepen zonder deze direct te benoemen. Het wordt vaak geschreven als `super().__init__()` om overgeërfde attributen te initialiseren.

Inkapseling beperkt de directe toegang tot de interne gegevens van een object. PythonVoorzie een attribuut van een enkel underscore-teken (_name) als beveiligd, of van een dubbel underscore-teken (__name) voor naammanipulatie.

Ja. EEN Python Een klasse kan van meerdere ouders erven, zoals bijvoorbeeld de klasse Child(A, B). Python Lost dubbele methodenamen op met behulp van de Method Resolution Order (MRO), die wordt gecontroleerd met de mro()-methode.

Objectgeoriënteerd programmeren staat centraal in AI- en machine learning-frameworks. Bibliotheken zoals PyTorch en scikit-learn modelleren netwerken, lagen en estimators als klassen, zodat je ze kunt overerven en hergebruiken om modellen te bouwen.

Ja. GitHub Copilot en AI-assistenten genereren Python Klassen, constructors en overerving worden uitgelegd met behulp van een korte prompt. Ze automatiseren repetitieve standaardcode, maar controleer de uitvoer wel op correcte logica.

Vat dit bericht samen met: