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: