Как вы импортируете константы / переменные класса в Python в соответствии с передовой практикой? - PullRequest
0 голосов
/ 08 апреля 2019

Я пишу фрагмент кода, включающий моделирование жидкости (топлива), с которой связаны некоторые константы (плотность, плотность энергии и т. Д.). Я хочу, чтобы эти константы и их значения были в отдельном файле Excel, чтобы к ним могли обращаться люди, которые не знают Python. Тем не менее, я изо всех сил пытаюсь понять, как я могу сделать это лучше всего.

Скажите, у меня есть следующий фрагмент кода:

class Fuel:

    DENSITY = a
    ENERGY_DENSITY = b

    def __init__():
        some_other_code

Теперь я хочу присвоить значения a и b , сначала считав значения из файла excel. Я делаю это, используя pandas.read_excel().

Я мог бы сделать это так:

class Fuel:
    CONSTANTS = pd.read_excel(file_name)
    DENSITY = CONSTANTS['density']
    ENERGY_DENSITY = CONSTANST['energy_density']

    def __init__():
        some_other_code

Однако, если бы мне пришлось создавать множество экземпляров класса Fuel, каждый экземпляр потребовал бы вызова read_excel, что сделало бы код излишне медленным.

Другой вариант - назначить переменные класса в моем main.py. Я бы назвал CONSTANTS = pd.read_excel() только один раз здесь, а затем я назначил значения классу следующим образом: в main.py

CONSTANTS = pd.read_excel(file_name)
Fuel.DENSITY = CONSTANTS['density']
Fuel.ENERGY_DENSITY = CONSTANTS['energy_density']

Это потребует от меня, однако, определения моего Fuel класса по-другому. Для этого я должен определить свой класс следующим образом:

class Fuel:

    def __init__():
        some_other_code

Теперь это кажется мне очень скрытным, потому что при проверке класса Fuel вы не увидите, что в нем есть переменные DENSITY и ENERGY_DENSITY.

Как эти переменные класса следует назначать из импортированного (внешнего) файла, в соответствии с передовой практикой?

...