Objectgeoriënteerd programmeren in Python
Alex Yarosh
Content Quality Analyst @ DataCamp
self als eerste argumentself.___
class MyClass:
# functiedefinitie in klasse
# eerste argument is self
def my_method1(self, other_args...):
# doe hier dingen
def my_method2(self, my_attr):
# attribuut aangemaakt door toewijzing
self.my_attr = my_attr
...
__init__() methode wordt elke keer aangeroepen als een object wordt gemaakt.class Customer: def __init__(self, name): self.name = name # <--- Maak het .name attribuut en stel het in op de name parameter print("De __init__ methode is aangeroepen")cust = Customer("Lara de Silva") #<--- __init__ wordt impliciet aangeroepen print(cust.name)
De __init__ methode is aangeroepen
Lara de Silva
class Customer: def __init__(self, name, balance): # <-- balance parameter toegevoegdself.name = name self.balance = balance # <-- balance attribuut toegevoegd print("De __init__ methode is aangeroepen")cust = Customer("Lara de Silva", 1000) # <-- __init__ wordt aangeroepen print(cust.name) print(cust.balance)
De __init__ methode is aangeroepen
Lara de Silva
1000
class Customer: def __init__(self, name, balance=0): #<--standaardwaarde voor balance instellenself.name = name self.balance = balance print("De __init__ methode is aangeroepen")cust = Customer("Lara de Silva") # <-- balance niet expliciet specificerenprint(cust.name) print(cust.balance) # <-- attribuut wordt toch aangemaakt
De __init__ methode is aangeroepen
Lara de Silva
0
class MyClass:
def my_method1(self, attr1):
self.attr1 = attr1
...
def my_method2(self, attr2):
self.attr2 = attr2
...
obj = MyClass()
obj.my_method1(val1) # <-- attr1 aangemaakt
obj.my_method2(val2) # <-- attr2 aangemaakt
class MyClass: def __init__(self, attr1, attr2): self.attr1 = attr1 self.attr2 = attr2 ...# Alle attributen worden aangemaakt obj = MyClass(val1, val2)
__init__()__init__()CamelCase voor klassen, lower_snake_case voor functies en attributen
__init__()CamelCase voor klassen, lower_snake_case voor functies en attributen
self als selfclass MyClass:
# Dit werkt maar is niet aanbevolen
def my_method(kitty, attr):
kitty.attr = attr
__init__()CamelCase voor klassen, lower_snake_case voor functies en attributen
self is selfclass MyClass:
"""Deze klasse doet niets"""
pass
Objectgeoriënteerd programmeren in Python