07 Объекты (Практика)
Собственный класс
class Account:
def __init__(self, account_number, account_type, initial_balance):
self.account_number = account_number
self.account_type = account_type
self.balance = initial_balance
def deposit(self, amount):
# should also check that amount is a numerical value!
if amount > 0:
self.balance = self.balance + amount
print(f'Deposited {amount}')
print(f'New balance is: {self.balance}')
else:
print(f'{amount} is an invalid amount.')
def withdraw(self, amount):
# should also check that amount is a numerical value!
if amount > 0 and amount <= self.balance:
self.balance = self.balance - amount
print(f'Withdrawal: {amount}')
print(f'New Balance: {self.balance}')
else:
if amount < 0:
print(f'{amount} is an invalid amount')
else:
print('Insufficient funds.')
print(f'Current balance is {self.balance}')
Создание объекта класса Account
Объект имеет аттрибуты: состояние и методы.
Получение состояния
my_account.account_number # '123-456'
my_account.account_type # 'saving'
my_account.balance # 1000.0
Вызов методов
my_account.deposit(1000)
# Deposited 1000
# New balance is: 2000.0
my_account.withdraw(500)
# Withdrawal: 500
# New Balance: 1500.0
integer и float тоже объекты
Запись 10 + 15
может быть записана в виде вызова метода
А float имеет метод отображения числа в виде дроби
Число 0.1 не имеет точного представления. Не смотря на то, что Python показывает число 0.1 как 0.1
На самом деле там хранится число близкое к 0.1
Поэтому если вызвать метод as_integer_ratio, то получится следующий результат