Modulelessen (1/4)
Klassen en instanties
Een klasse is een blauwdruk voor het maken van objecten die gegevens (attributen) bevatten en gedrag (methoden). Een instantie is een concreet object waaruit is gemaakt de klas.
Minimale syntaxis
class Cane:
def __init__(self, nome, eta):
self.nome = nome
self.eta = eta
def abbaia(self):
return f"{self.nome} dice WOOF!"
# creazione di istanze
fido = Cane("Fido", 3)
luna = Cane("Luna", 5)
fido.nome # 'Fido'
fido.abbaia() # 'Fido dice WOOF!'__init__: de "constructor"
De methode __init__ wordt automatisch aangeroepen wanneer u een
exemplaar (Cane("Fido", 3)). Het wordt gebruikt om de attributen te initialiseren.
Technisch gezien is het geen constructor (het object is al gemaakt door
__new__), maar het is de plaats waar u de beginstatus instelt.
self: de eerste parameter
self is de verwijzing naar de instantie waarop de methode is aangeroepen. Het is een
conventie (geen trefwoord) en is altijd de eerste parameter van de instantie
methoden.
fido.abbaia()
# equivalente a Cane.abbaia(fido)
# Python passa fido come self automaticamenteInstantie versus klassekenmerken
class Cane:
specie = "Canis familiaris" # attributo di CLASSE (condiviso)
def __init__(self, nome):
self.nome = nome # attributo di ISTANZA (per ognuno)
fido = Cane("Fido")
luna = Cane("Luna")
fido.nome # 'Fido' (istanza)
luna.nome # 'Luna' (istanza)
fido.specie # 'Canis familiaris' (cercato sulla classe)
Cane.specie # 'Canis familiaris'Meerdere methoden en status
class Contatore:
def __init__(self, inizio=0):
self.valore = inizio
def incrementa(self, di=1):
self.valore += di
def reset(self):
self.valore = 0
c = Contatore()
c.incrementa()
c.incrementa(di=5)
c.valore # 6
c.reset()
c.valore # 0Jouw beurt
Definieer een klasse `Point` met __init__(self, x, y) waarin de attributen zijn opgeslagen. Voeg een methode `distance_from_origin` toe die de vierkantswortel van x^2 + y^2 retourneert. Creëer `p = Point(3, 4)` en evalueer `p.distance_from_origin()`.
Toon hint
wiskunde.sqrt(zelf.x ** 2 + zelf.y ** 2)
Oplossing beschikbaar na 3 pogingen
Oefening beoordelen
Definieer `BankAccount` met __init__(self, balance=0) en methoden `deposit(amount)`, `withdraw(amount)` die self.balance wijzigen. Creëer `a = BankAccount(100)`, stort 50, neem 30 op. Evalueer `a.saldo`.
Toon hint
self.balance += bedrag in deposito.
Oplossing beschikbaar na 3 pogingen
Extra uitdaging
Define a class `Rectangle` with a constructor `__init__(self, width, height)` to set width and height, and a method `area(self)` that returns the product of width and height. Instantiate a rectangle with width `4` and height `5` storing it in `rect`, and evaluate `rect.area()`.
Toon hint
Vergeet niet om self te gebruiken om toegang te krijgen tot attributen binnen area(self).
Oplossing beschikbaar na 3 pogingen