Python class en constructor

Python bootcamp #100DaysOfCode #myNotes

Een class is een blauwdruk voor het maken van een object. Bij het aanmaken van het object kun je als je wilt alvast wat attributen meegeven. Een attribuut is een variabele geassocieerd met een object. Dit doe je binnen de constructor, die in Python een methode is die init tussen dubbele underscores wordt genaamd. De constructor wordt elke keer dat een object wordt aangemaakt aangeroepen.
De constructor heeft altijd de parameter "self". Dit is het eigenlijke object dat wordt gecreëerd. Naast self mag je meerdere parameters meegeven aan de constructor. In het voorbeeld hieronder zijn dat user_id en username. Bij het aanmaken van een object van de class User is het logisch om deze tijdens het aanmaken al mee te geven aangezien dit er altijd zal zijn in dit voorbeeld.
Naast een constructor en attributen kan je ook class specifieke methoden definiëren. Een functie dat is gekoppeld aan een object wordt methode genoemd. Ik haal ze vaak door elkaar.

class User:
    # self is het eigenlijke object dat wordt gecreëerd/geïnitialiseerd/
    # init is de constructor
    def __init__(self, user_id, username):
                # bij het aanmaken van dit object (self)
                # wordt alvast een user_id en username meegegeven.
                # deze wordt gekoppeld aan het object op onderstaande wijze.
        self.user_id = user_id
        self.username = username
                # een object kan bij het aanmaken ook andere (start) attributen
                # hebben zoals hieronder toegewezen followers/following. 
        self.followers = 0
        self.following = 0

    def follow(self, user):
        user.followers += 1
        self.following += 1

# user_1 en user_2 zijn objecten van de class User.
user_1 = User("001", "Luus")
user_2 = User("002", "Pat")


user_1.follow(user_2)
print(user_1.followers) # 0
print(user_2.followers) # 1
print(user_1.following) # 1
print(user_2.following) # 0

You'll only receive email when LUUS andriessen publishes a new post

More from LUUS andriessen