Пара вещей.
В reset_values_to_default()
вы можете сохранить pd.Timestamp.now()
как переменную, а затем использовать ее в диктовке. Это крайний случай, но он не позволяет последующим вызовам на pd.Timestamp.now()
перекрывать два разных месяца.
В классах первая буква должна быть заглавной.
class Planning:
pass
Как упоминал @MatsLindh, kwargs
будет лучше, чем диктат здесь. Или просто укажите в конструкторе только те параметры, которые вам нужны, поскольку вы все равно получите KeyError
, если вы их не предоставите.
def __init__(self, file_path, routing, org_name):
self.file_path = file_path
self.routing = routing
self.org_name = org_name
или kwargs
def __init__(self, **kwargs):
self.file_path = kwargs['file_path']
self.routing = kwargs['routing']
self.org_name = kwargs['org_name']
# Planning(file_path='/path', routing='routes', org_name='stackoverflow')
Вы впервые устанавливаете переменные экземпляра вне метода __init__
. Это не рекомендуется. И, похоже, вам не нужно хранить self.routing
или self.file_path
в любом случае. Вы можете сделать это:
def __init__(self, file_path, routing, org_name):
self.org_name = org_name
if not os.path.exists(file_path):
print('No input file found. Exiting...')
raise FileNotFoundError()
self.frame = pd.read_excel(file_path, sheet_name='Master')
print(f'Activating variant {routing}')
self.df = self.frame['ID']
planning = Planning(reset_values_to_default())
print(planning.df)