Klasse-anatomie: attributen en methoden

Objectgeoriënteerd programmeren in Python

Alex Yarosh

Content Quality Analyst @ DataCamp

Een basis klasse

class Customer:

# code voor klasse gaat hier
pass
  • class <name>: start een klasse-definitie
  • code binnen class is ingesprongen
  • gebruik pass om een "lege" klasse te maken
c1 = Customer()
c2 = Customer()
  • gebruik ClassName() om een object van klasse ClassName te maken
Objectgeoriënteerd programmeren in Python

Voeg methoden toe aan een klasse

class Customer:  

    def identify(self, name):   
      print("Ik ben Klant " + name)
  • methode-definitie = functie-definitie binnen klasse
  • gebruik self als het 1e argument in methode-definitie
cust = Customer()
cust.identify("Laura")
Ik ben Klant Laura
  • negeer self bij het aanroepen van een methode op een object
Objectgeoriënteerd programmeren in Python
class Customer:  

    def identify(self, name):   
      print("Ik ben Klant " + name)

cust = Customer()
cust.identify("Laura")

Wat is self?

  • klassen zijn sjablonen, hoe verwijs je naar data van een specifiek object?
  • self is een placeholder voor een specifiek object in de klasse-definitie
  • moet het eerste argument van elke methode zijn
  • Python regelt self als een methode vanuit een object wordt aangeroepen:

cust.identify("Laura") wordt geïnterpreteerd als Customer.identify(cust, "Laura")

Objectgeoriënteerd programmeren in Python

We hebben attributen nodig

  • Encapsulatie: data bundelen met methoden die op die data werken
  • Bijv. de naam van Customer moet een attribuut zijn

  $$\text{\Large{Attributen worden gemaakt door toewijzing (=) in methoden}}$$

Objectgeoriënteerd programmeren in Python

Voeg een attribuut toe aan klasse

class Customer:  
    # stel het naam-attribuut van een object in op new_name
    def set_name(self, new_name):

# Maak een attribuut door een waarde toe te wijzen self.name = new_name # <-- maakt .name aan wanneer set_name wordt aangeroepen
cust = Customer()                   # <--.name bestaat hier nog niet

cust.set_name("Lara de Silva") # <--.name wordt aangemaakt en ingesteld op "Lara de Silva"
print(cust.name) # <--.name kan worden gebruikt
Lara de Silva
Objectgeoriënteerd programmeren in Python

Oude versie

class Customer:  



    # Gebruik een parameter
    def identify(self, name):   
      print("Ik ben Klant" + name)
cust = Customer()

cust.identify("Eris Odoro")
Ik ben Klant Eris Odoro

Nieuwe versie

class Customer:  
   def set_name(self, new_name): 
      self.name = new_name

    # Gebruik .name van het object zelf
    def identify(self):     
      print("Ik ben Klant" + self.name)
cust = Customer()
cust.set_name("Rashid Volkov")
cust.identify()
Ik ben Klant Rashid Volkov
Objectgeoriënteerd programmeren in Python

Laten we oefenen!

Objectgeoriënteerd programmeren in Python

Preparing Video For Download...