Добавить less7.md
This commit is contained in:
parent
5d050a4d3c
commit
759248dd92
|
@ -0,0 +1,89 @@
|
||||||
|
[Ссылка на урок](https://youtu.be/iJu8UnKAWfA?si=wCmaFZE5mC9lkV--)
|
||||||
|
|
||||||
|
ООП в 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)
|
||||||
|
|
||||||
|
[Вернуться на главную](readme.md)
|
Loading…
Reference in New Issue