PYTHON ДЛЯ 1C — ЭТО ПРОСТО. ЧАСТЬ 8

Наследование в 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'))