Python-Cheatsheet/less7.md

105 lines
2.8 KiB
Markdown

[Ссылка на урок](https://youtu.be/iJu8UnKAWfA?si=wCmaFZE5mC9lkV--)
### ООП в Python ###
```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)
```
### Создание объекта ###
```python
table = Product()
table.name = "Стол"
table.price = 1500
table.help()
```
### Атрибуты класса в Python ###
```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 ###
```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)