/
bingle
/
prog_dz1
Обзор
Документация
Войти
/
bingle
/
prog_dz1
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/func_class.py
82 строки
2 KB
work@ya.com
stable
27 янв 2025, 12:21
27 янв 2025, 12:21
70ada14
Код
Авторство
О чём код?
from abc import ABC, abstractmethod # import yaml from . import yaml class Dict_yaml_file(ABC): def __init__(self,dct=None) -> None: if dct is not None: self._dct:dict=self.open_yaml_file(dct) else: self._dct={} @abstractmethod def open_yaml_file(self,filename)->dict: with open(filename, 'r',encoding='utf-8') as f: return yaml.load(f,Loader=yaml.UnsafeLoader) @property @abstractmethod def dct (self)->dict: pass @dct.setter @abstractmethod def dct(self,args,k)->None: pass class Base_dict_yaml(Dict_yaml_file): def __init__(self,dct=None) -> None: super().__init__(dct) @property def dct(self)->dict: return self._dct @dct.setter def dct(self,args)->None: match len(args): case 2: prog_rec_detal,adress=args self._dct.setdefault(prog_rec_detal,{}).update({'adress': adress}) case 6: prog_rec_detal,prog_rec_machine,name_id,adressUP,adressBdUp,adressLink_Up=args self._dct[prog_rec_detal].setdefault('machine',[]).append({prog_rec_machine:{'name_id':name_id, 'adressUP':adressUP, 'adressBdUp':adressBdUp, 'adressLink_Up':adressLink_Up}} ) case _: raise Exception('не четко указаны параметры') def open_yaml_file(self, filename) -> dict: return super().open_yaml_file(filename) class Temp_dict_yaml(Dict_yaml_file): def __init__(self,dct=None) -> None: super().__init__(dct) def open_yaml_file(self, filename) -> dict: return super().open_yaml_file(filename) @property def dct(self)->dict: return self._dct @dct.setter def dct(self,args:tuple)->None: prog_rec_detal,adress=args self._dct.setdefault(prog_rec_detal,{}).update({'folder': adress}) if __name__ == '__main__': d1=Temp_dict_yaml() # d1.dct=(5,6) # print(d1.dct) # d2=Base_dict_yaml() # d2.dct=(5,7) # print(d2.dct)