Должен ли я создавать глобальные функции в модулях, которые принимают экземпляр основных данных и запись клиента в качестве параметра и возвращают запись основных данных?
Как правило.
модуль Python, который я написал для каждого клиента, который содержит различные подробности о файле клиента в форме переменных уровня модуля;например, в нем указано, какое поле клиента содержит идентификатор продукта;и т.д.
Это не должен быть модуль.Это не неправильно .Но это может сбивать с толку.
Подумайте об изменении вещей, чтобы у вас было что-то вроде этого.
class AbstractCustomerData( object ):
"""Generic features common to all customer data."""
Тогда.У каждого клиента есть модуль, который имеет
from the_master_copy import AbstractCustomerData
class ThisCustomerData( AbstractCustomerData ):
"""All the various kinds of overrides and whatnot."""
def the_matching_rule( self, master_data_object_or_collection_or_whatever ):
"""This customer's override."""
. Таким образом, вы можете использовать свои экземпляры ThisCustomerData
в модуле клиента.Модуль не аргумент ни к чему;модуль содержит код клиента.
Тогда установка вашего приложения клиентом выглядит следующим образом
import generic_stuff
from customer_module import ThisCustomerData, other_feature, yet_more
Теперь вы можете создать конкретный экземпляр приложения для клиента из generic_stuff плюс специфический для клиентапереопределения, импортированные из клиентского модуля расширения.
Это дает то преимущество, что дает гораздо большую свободу, поскольку вы не ограничены подключением модуля к классу.Вы используете модуль для определения класса, который теперь может делать что угодно .