Самый чистый способ создавать экземпляры класса динамически - PullRequest
0 голосов
/ 20 апреля 2020

В caluclations.py у меня есть один класс под названием PowerPlant () с

def __init__(self, parameter1, parameter2, parameter3, ...) 

и некоторыми функциями, принадлежащими этому классу, например, Calculate_supply (self, variable1, variable2).

I ' Я хотел бы применить расчеты из computing.py к некоторым электростанциям, хранящимся в CSV-файле. Пока что я использую следующий способ ...

В Simulation.py я читаю данные из CSV с помощью pd.read_csv ()

plant_data = pd.read_csv('plants.csv', sep = ';', index_col = False, encoding = 'latin') 

Затем я создаю список списков с

# Create list of lists from plant_data DataFrame
list_of_plants = [list(row) for row in plant_data.values]

Впоследствии я создаю экземпляр Class PowerPlant с

## Outer loop: Iterate over all plants
for row in range(len(list_of_plants)):

    ElectricityOut = []
    Gains = []
    ...

    # Initialise an instance of the plant
    MyPowerPlant = PowerPlant(parameter1 = list_of_plants[row][0], 
                              parameter2 = list_of_plants[row][1], 
                              parameter3 = list_of_plants[row][2], 
                              ...)

    # call some methods from calculations.py 
    ...

Любые идеи и предложения, как я могу сделать это лучше и более профессионально?
Может быть, создать объект для каждого растения?

Ответы [ 2 ]

1 голос
/ 20 апреля 2020

Вы можете выполнять итерации по списку примерно так, без необходимости в диапазоне (len ())

for row in list_of_plants:

    ElectricityOut = []
    Gains = []
    ...

    # Initialise an instance of the plant
    MyPowerPlant = PowerPlant(parameter1 = row[0], 
                              parameter2 = row[0], 
                              parameter3 = row[0], 
                              ...)
0 голосов
/ 24 апреля 2020

Я не доволен доступом к элементам списка с помощью [item], например list_of_plants [row] [0]

Насколько я знаю, нет возможности получить доступ к спискам через имена (используйте словари для этого), но что с namedTuples? Можно ли создавать экземпляры класса из namedTuples? Если это так, я бы изменил список на namedTuple ...

Есть предложения?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...