Loading...
supersane avatar supersane 234 Точки

[Python OOP] Json and Yaml Loaders

Здравейте от лекцията снощи ни остана за вкъщи да си направим класове за зареждане на yaml и json формати.
Аз направих един базов клас Loader. И два наследника: JsonLoader, YamlLoader. От другия .py файл, който ползваме за входна точка преработих функцията за зареждане на данни от файл по този начин и работи, но снощи, когато правихме функцията за иницилиазиране на обект от някакъв тип фигура го правихме като ползваме речник и така избегнахме струпването на if-elif. Има ли вариант и с тези loader-и да се направи по същия начин. Примерно взима се файл екстеншъна проверява се в речника, където е зададен като ключ и ако го има, като стойност да седи класа на дадения loader и да се инстанцира. Дано съм задал правилно въпроса си, ето тук е това, което имам предвид за фигурите. 

Тагове:
0
Python
RoYaL avatar RoYaL Trainer 6849 Точки

Ами можеш, защо да не можеш? :) Просто премести стойностите на if/elif-овете като ключове на речника. А стойностите на тези ключове ще са съответните типове - JsonLoader и YamlLoader

LOADERS = {

     ".json": JsonLoader,

     ".yaml": YamlLoader

}

От там нататък е аналогично. LOADERS[extension] ;)

0
supersane avatar supersane 234 Точки

Да и аз така съм направил, но така мисля, че не ме инстанцира съответния loader и не мога да ползам метода му load. Ето направо скрийншот как го пробвам и грешката отдолу, ако може хвърли един поглед и кажи ако имаш идея :)

0
RoYaL avatar RoYaL Trainer 6849 Точки

Сигурен ли си, че си дефинирал речника, след като си дефинирал типовете?

Ето при мен работи:

http://pastebin.com/Twvb84Ta

 

0
supersane avatar supersane 234 Точки

Да, то като цяло те са ми в други файлове отделени, поогледах кода и се сетих, че метода като го подавам за използване не го подавам с скобки () след името и затова не се изпълнява. Сложих ги и си тръгна програмата, мерси :)

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.