Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 15, 2009 17:47:12

Evg
От:
Зарегистрирован: 2008-12-25
Сообщения: 346
Репутация: +  -1  -
Профиль   Отправить e-mail  

Импорт модуля и класса на лету, подскажите более короткий вариант

Есть имя модуля в переменной и имя класса внутри модуля переменной.
Нужно создать инстанс этого класса, делаю так:

        cls = "MyClass"
file = "filename"

m =__import__("folder."+file)
m = getattr(m,file)
c = getattr(m,cls)
i = c()
можно ли сделать короче?



Офлайн

#2 Окт. 15, 2009 18:08:19

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Импорт модуля и класса на лету, подскажите более короткий вариант

Ну можно в строчку записать, а смысл?

cls = "MyClass"
file = "filename"

i =getattr(m,getattr(__import__("folder.%s" % file), file), cls)()



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#3 Окт. 15, 2009 18:32:37

Evg
От:
Зарегистрирован: 2008-12-25
Сообщения: 346
Репутация: +  -1  -
Профиль   Отправить e-mail  

Импорт модуля и класса на лету, подскажите более короткий вариант

PooH
Ну можно в строчку записать, а смысл?
действительно), поэтому я имел ввиду именно другой способ а не форматирование)



Офлайн

#4 Окт. 15, 2009 18:36:44

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Импорт модуля и класса на лету, подскажите более короткий вариант

cls = "MyClass"
file = "filename"

m =__import__("folder."+file, {}, {}, [cls])
cls = getattr(m, cls)
Короче - никак. __import__ всегда вернет модуль.



Офлайн

#5 Окт. 15, 2009 18:36:46

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Импорт модуля и класса на лету, подскажите более короткий вариант

Evg
PooH
Ну можно в строчку записать, а смысл?
действительно), поэтому я имел ввиду именно другой способ а не форматирование)
Дык вот я смысла то и не пойму. Что значит более короткий вариант? у вас несколько тысяч в минуту импортируется? или запись длинная - плохо читается? так в функцию ее упрятать. Ну вот убейте, не пойму проблемы :( В чем смысл оптимизации сего куска?



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#6 Окт. 15, 2009 18:43:52

Evg
От:
Зарегистрирован: 2008-12-25
Сообщения: 346
Репутация: +  -1  -
Профиль   Отправить e-mail  

Импорт модуля и класса на лету, подскажите более короткий вариант

PooH
Дык вот я смысла то и не пойму. Что значит более короткий вариант?
Ну вот например он 1 постом выше вашего) значит что в нем меньше кода, а смысл в чисто психологическом восприятии и только)

PooH
запись длинная - плохо читается? так в функцию ее упрятать
Ну перед тем как прятать лучше узнать нет ли чего-нить более короткого по умолчанию, а то так по неопытности столько всего напрятать можно)



Отредактировано (Окт. 15, 2009 18:45:15)

Офлайн

#7 Окт. 15, 2009 18:56:35

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Импорт модуля и класса на лету, подскажите более короткий вариант

Evg
Ну вот например он 1 постом выше вашего) значит что в нем меньше кода, а смысл в чисто психологическом восприятии и только)
Согласен. Хотя там создаются и тут же исчезают два словаря и список. ;)



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#8 Окт. 15, 2009 19:17:40

Evg
От:
Зарегистрирован: 2008-12-25
Сообщения: 346
Репутация: +  -1  -
Профиль   Отправить e-mail  

Импорт модуля и класса на лету, подскажите более короткий вариант

PooH
Хотя там создаются и тут же исчезают два словаря и список. wink
Это скорее забота для интерпретатора как оптимизировать такие вещи, уж лучше беречь свои нервы и время читая меньше символов)



Офлайн

#9 Окт. 15, 2009 19:35:50

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

Импорт модуля и класса на лету, подскажите более короткий вариант

Главное не краткость, а читабельность.

Sparse is better than dense.
Readability counts.

Офлайн

#10 Окт. 15, 2009 20:15:20

Evg
От:
Зарегистрирован: 2008-12-25
Сообщения: 346
Репутация: +  -1  -
Профиль   Отправить e-mail  

Импорт модуля и класса на лету, подскажите более короткий вариант

они рядом)



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version