Lecții din modul (1/4)
Clase și instanțe
O clasă este un plan pentru crearea de obiecte care au date (atribute) și comportament (metode). O instanță este un obiect concret creat din clasa.
Sintaxă minimă
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__: „constructorul”
Metoda __init__ este numită automat când creați o
instanță (Cane("Fido", 3)). Este folosit pentru a inițializa atributele.
Din punct de vedere tehnic, nu este un constructor (obiectul a fost deja creat de
__new__), dar este locul în care setați starea inițială.
self: primul parametru
self este referința la instanța pe care a fost apelată metoda. Este o
convenție (nu un cuvânt cheie) și este întotdeauna primul parametru al instanței
metode.
fido.abbaia()
# equivalente a Cane.abbaia(fido)
# Python passa fido come self automaticamenteInstanță vs atribute de clasă
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'Mai multe metode și stare
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 # 0Rândul tău
Definiți o clasă `Point` cu __init__(self, x, y) care stochează atributele. Adăugați o metodă `distanța_de_origin`` care returnează rădăcina pătrată a lui x^2 + y^2. Creați `p = Point(3, 4)` și evaluați `p.distance_from_origin()`.
Afișează indiciu
math.sqrt(self.x ** 2 + self.y ** 2)
Soluție disponibilă după 3 încercări
Exercițiu de revizuire
Definiți `BankAccount` cu __init__(self, sold=0) și metodele `deposit(amount)`, `draw(amount)` care modifică self.balance. Creați `a = BankAccount(100)`, depuneți 50, retrageți 30. Evaluați `a.balance`.
Afișează indiciu
self.balance += suma în depozit.
Soluție disponibilă după 3 încercări
Provocare suplimentară
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()`.
Afișează indiciu
Nu uitați să utilizați self pentru a accesa atributele din interiorul zonei (self).
Soluție disponibilă după 3 încercări