Добавить 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