У меня есть базовый сценарий Python, который мне нужно преобразовать в класс и создать несколько экземпляров этого класса.
В сценарии есть несколько глобальных держателей данных, которые функции модифицируют.Глобальные переменные выглядят примерно так:
# a global list
list_1 = [...]
# a global dictionary
dict_1 = {...}
# a global pandas dataframe
df_1 = pd.DataFrame(...)
У меня есть одна основная функция (которая выполняет самые важные задачи) и множество вспомогательных функций для конкретных задач, которые основная функция вызывает при необходимости.Примерно так:
# main function
def main_def():
global list_1, dict_1, df_1
aux_def_1 (list_1, df_1)
aux_def_2 (dict_1, df_1)
# auxiliary function 1
def aux_def_1 ()
global list_1, dict_1, df_1
...
# auxiliary function 2
def aux_def_2 ()
global list_1, dict_1, df_1
...
Я использую приведенный выше скрипт в блокноте jupyter следующим образом:
import script as scr
scr.main_def()
scr.aux_def_1()
scr.aux_def_2()
scr.list_1
scr.dict_1
scr.df_1
Теперь мне нужно создать несколько основных функций, таких как приведенные выше, и большинство глобальных функций.переменные и вспомогательные функции останутся прежними.
Один из способов сделать это - создать базовый класс, определяющий глобальные переменные и вспомогательные функции, а затем создать экземпляры этого класса.У каждого экземпляра будет своя основная функция.
Каков наилучший способ сделать это с минимальными изменениями в существующем коде?
РЕДАКТИРОВАТЬ: Можно ли организовать дело следующим образом:
class BaseClass:
# BaseClass list
list_1 = [...]
# BaseClass dictionary
dict_1 = {...}
# BaseClass pandas dataframe
df_1 = pd.DataFrame(...)
# BaseClass auxiliary function 1
def aux_def_1 ()
# BaseClass auxiliary function 2
def aux_def_2 ()
class MainDef_1(BaseClass)
def __init__(self, parameter1, parameter2, parameter3):
self.parameter1 = parameter1
self.parameter2 = parameter2
self.parameter3 = parameter3
class MainDef_2(BaseClass)
def __init__(self, parameter1, parameter3, parameter4):
self.parameter1 = parameter1
self.parameter3 = parameter3
self.parameter4 = parameter4