2.7 KiB
2.7 KiB
ООП в Python class Product: count = 0
# При инициализации объекта можно передать параметры
def __init__(self, price=0):
self.name = ""
self.price = price
Product.count += 1
def help(self):
print("Название товара:", self.name)
def __del__(self):
Product.count -= 1
print("Этот стол отправился в топку")
def __str__(self):
return "Теперь я могу вывести цену: " + str(self.price)
def __bool__(self):
return self.price > 0
def __eq__(self, other):
return self.price == other.price
def __add__(self, other):
new_obj = Product()
if isinstance(other, Product):
new_obj.name = self.name
new_obj.price = self.price + other.price
return new_obj
def __call__(self, *args, **kwargs):
print(args, kwargs)
Создание объекта
table = Product() table.name = "Стол" table.price = 1500 table.help() Атрибуты класса в Python
Атрибуты можно добавлять динамически
table.color = "красный" print(dir(table))
И удалять тоже
del table.color print(dir(table))
Можно проверить сущестовование атрибута
print("Есть атрибут color", hasattr(table, "color")) print("Есть атрибут name", hasattr(table, "name"))
установить атрибут
setattr(table, "material", "дуб")
удалить
delattr(table, "material")
и получить
print(getattr(table, "name")) Магические методы класса в Python
Передача параметров при инициализации init(self, price=0)
table_2 = Product(3500) print(table_2.price)
Изменение представления объекта при распечатке str
print(table_2)
Проверка объекта как булево bool
table_2.price = 0 if table_2: print("Цена объекта > 0") else: print("Цена объекта = 0")
Сравнение объектов eq
table_2.price = 1500 if table == table_2: print("Цена одинаковая")
сложение объектов add
table_3 = table + table_2 print(table_3)
Обращение к объекту как к функции call
table_3(5, a=4)
print(Product.count)