Klasse- vs. instantie-attributen

Introductie tot objectgeoriënteerd programmeren in Python

George Boorman

Curriculum Manager, DataCamp

Kernprincipes van OOP

Encapsulatie:

  • Bundel data en methoden

Overerving:

  • Breid bestaande functionaliteit uit

Polymorfisme:

  • Maak één uniforme interface
Introductie tot objectgeoriënteerd programmeren in Python

Instantie-attributen

class Employee:
    def __init__(self, name, salary):
        self.name = name
        self.salary = salary

emp1 = Employee("Teo Mille", 50000) 
emp2 = Employee("Marta Popov", 65000)
  • Waarden van name en salary zijn per object uniek
  • self wijst toe aan het object
Introductie tot objectgeoriënteerd programmeren in Python

Klasse-attributen

  • Data gedeeld door alle instanties van een class

 

  • Definieer klasse-attributen in de body van class

 

  • "Globale variabele" binnen de class
Introductie tot objectgeoriënteerd programmeren in Python

Klasse-attributen implementeren

class Employee:
    # Definieer een klasse-attribuut
    # Geen self.-syntax
    MIN_SALARY = 30000 

def __init__(self, name, salary): self.name = name # Gebruik klassenaam # om klasse-attribuut te benaderen if salary >= Employee.MIN_SALARY: self.salary = salary
else: self.salary = Employee.MIN_SALARY
  • MIN_SALARY wordt gedeeld door alle instanties
  • Gebruik geen self om een klasse-attribuut te definiëren
  • Conventie: hoofdletters
  • Gebruik ClassName.ATTR_NAME om de klasse-waarde te benaderen
Introductie tot objectgeoriënteerd programmeren in Python

Klasse-attributen

class Employee:
    # Definieer een klasse-attribuut
    MIN_SALARY = 30000    

def __init__(self, name, salary): self.name = name # Gebruik klassenaam # om klasse-attribuut te benaderen if salary >= Employee.MIN_SALARY: self.salary = salary else: self.salary = Employee.MIN_SALARY
emp1 = Employee("John", 40000)
print(emp1.MIN_SALARY)
30000
emp2 = Employee("Jane", 60000)
print(emp2.MIN_SALARY)
30000
Introductie tot objectgeoriënteerd programmeren in Python

Klasse-attributen wijzigen

emp1 = Employee("John", 40000)
emp2 = Employee("Jane", 60000)

# Update MIN_SALARY van emp1 emp1.MIN_SALARY = 50000
# Print MIN_SALARY voor beide employees print(emp1.MIN_SALARY) print(emp2.MIN_SALARY)
50000
30000
Introductie tot objectgeoriënteerd programmeren in Python

Klasse-attributen wijzigen

  • MIN_SALARY wordt gedefinieerd in de class-definitie

 

  • Het updaten van MIN_SALARY op een object wijzigt de waarde in de class niet

 

  • Veiligheid: voorkom ongewenste wijzigingen in software
Introductie tot objectgeoriënteerd programmeren in Python

Waarom klasse-attributen gebruiken?

Globale constanten bij de class

 

  • Minimum- en maximumwaarden voor attributen
    • Voorkom ongeldige data
  • Vaak gebruikte waarden/constantens, bijv. host, port voor een Database-class
    • Vermijd herhaling bij het maken van objecten
Introductie tot objectgeoriënteerd programmeren in Python

Laten we oefenen!

Introductie tot objectgeoriënteerd programmeren in Python

Preparing Video For Download...