Модульні уроки (1/4)
Класи та екземпляри
Клас — це план для створення об’єктів, які мають дані (атрибути) і поведінка (методи). Примірник — це конкретний об’єкт, створений з клас.
Мінімальний синтаксис
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__: "конструктор"
Метод __init__ викликається автоматично, коли ви створюєте
примірник (Cane("Fido", 3)). Він використовується для ініціалізації атрибутів.
Технічно це не конструктор (об’єкт уже створено
__new__), але це місце, де ви встановлюєте початковий стан.
self: перший параметр
self — це посилання на екземпляр, у якому було викликано метод. Це а
конвенція (не ключове слово) і є завжди першим параметром екземпляра
методи.
fido.abbaia()
# equivalente a Cane.abbaia(fido)
# Python passa fido come self automaticamenteЕкземпляр проти атрибутів класу
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'Кілька методів і стан
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 # 0Ваша черга
Визначте клас `Point` з __init__(self, x, y), який зберігає атрибути. Додайте метод `distance_from_origin`, який повертає квадратний корінь з x^2 + y^2. Створіть `p = Point(3, 4)` і обчисліть `p.distance_from_origin()`.
Показати підказку
math.sqrt(self.x ** 2 + self.y ** 2)
Рішення доступне після 3 спроб
Повторна вправа
Визначте `BankAccount` за допомогою __init__(self, balance=0) і методи `deposit(amount)`, `withdraw(amount)`, які змінюють self.balance. Створіть `a = BankAccount(100)`, внесіть 50, зніміть 30. Оцініть `a.balance`.
Показати підказку
self.balance += сума на депозиті.
Рішення доступне після 3 спроб
Додатковий виклик
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()`.
Показати підказку
Не забувайте використовувати self для доступу до атрибутів усередині area(self).
Рішення доступне після 3 спроб