Добавить less8.md
This commit is contained in:
		
							parent
							
								
									759248dd92
								
							
						
					
					
						commit
						bcaa0a47b9
					
				| 
						 | 
				
			
			@ -0,0 +1,81 @@
 | 
			
		|||
[Ссылка на урок](https://youtu.be/v3U6SGj2l_Q?si=bOMRzo_OsgBnto0K)
 | 
			
		||||
 | 
			
		||||
Наследование в Python
 | 
			
		||||
Создадим базовый класс “Справочник”
 | 
			
		||||
 | 
			
		||||
from random import randint
 | 
			
		||||
from uuid import uuid4
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Наследование
 | 
			
		||||
class Catalog:
 | 
			
		||||
 | 
			
		||||
    def get_object(self):
 | 
			
		||||
        print("Получаем из базы: {}".format(self.__class__.__name__))
 | 
			
		||||
 | 
			
		||||
    def write(self):
 | 
			
		||||
        print("Записываем в базу: {}".format(self.__class__.__name__))
 | 
			
		||||
 | 
			
		||||
    def delete(self):
 | 
			
		||||
        print("Удаляем из базы: {}".format(self.__class__.__name__))
 | 
			
		||||
 | 
			
		||||
    @staticmethod
 | 
			
		||||
    def search_by_ref(ref):
 | 
			
		||||
        return "Ищем в базе по ссылке {}".format(ref)
 | 
			
		||||
Создадим класс “Справочники” с инициализацией экземпляра класса необходимыми атрибутами объекта и наследуемся от класса “Справочник”
 | 
			
		||||
 | 
			
		||||
class Catalogs(Catalog):
 | 
			
		||||
 | 
			
		||||
    def __init__(self, description=''):
 | 
			
		||||
        self.code = randint(1, 1000)
 | 
			
		||||
        self.description = description
 | 
			
		||||
        self.deletion_mark = False
 | 
			
		||||
        self.ref = uuid4()
 | 
			
		||||
 | 
			
		||||
    def __str__(self):
 | 
			
		||||
        return "Код {} Наименование {} Ссылка {}".format(self.code, self.description, self.ref)
 | 
			
		||||
Создадим 2 класса “Товары” и  “Партнеры”. Оба наследуются от “Справочники”. В классах добавляем необходимые реквизиты для этих видов и при необходимости переопределяем методы родительских классов.
 | 
			
		||||
 | 
			
		||||
class Products(Catalogs):
 | 
			
		||||
 | 
			
		||||
    def __init__(self, description=''):
 | 
			
		||||
        super(Products, self).__init__(description)
 | 
			
		||||
        self.image = None
 | 
			
		||||
 | 
			
		||||
    def write(self):
 | 
			
		||||
        # Можно проверить на корректность введеных данных
 | 
			
		||||
        if self.image is not None:
 | 
			
		||||
            super().write()
 | 
			
		||||
        else:
 | 
			
		||||
            print("Обязательно добавьте изображение")
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class Partner(Catalogs):
 | 
			
		||||
 | 
			
		||||
    def __init__(self):
 | 
			
		||||
        super(Partner, self).__init__()
 | 
			
		||||
        self.inn = ""
 | 
			
		||||
        self.kpp = ""
 | 
			
		||||
Примеры создания экземпляров классов
 | 
			
		||||
 | 
			
		||||
table = Products('Стол дуб')
 | 
			
		||||
print(table)
 | 
			
		||||
table.write()
 | 
			
		||||
 | 
			
		||||
table2 = Products()
 | 
			
		||||
table2.description = 'Стол сосна'
 | 
			
		||||
table2.image = 'Изображение'
 | 
			
		||||
print(table2)
 | 
			
		||||
table2.write()
 | 
			
		||||
 | 
			
		||||
ooo_mayak = Partner()
 | 
			
		||||
ooo_mayak.description = 'ООО Маяк'
 | 
			
		||||
ooo_mayak.inn = '123'
 | 
			
		||||
ooo_mayak.kpp = '465768'
 | 
			
		||||
print(ooo_mayak)
 | 
			
		||||
ooo_mayak.write()
 | 
			
		||||
Пример вызова статического метода класса
 | 
			
		||||
 | 
			
		||||
print(Catalog.search_by_ref('734235ee-b821-4467-a905-ffb5a86a2ab0'))
 | 
			
		||||
 | 
			
		||||
[Вернуться на главную](readme.md)
 | 
			
		||||
		Loading…
	
		Reference in New Issue