Найти - Пользователи
Полная версия: Конструктор нужного класса по строке
Начало » Python для новичков » Конструктор нужного класса по строке
1
CJay
Здравствуйте, заранее извиняюсь, не могу воспользоваться гуглом из-за того, что не знаю, по каким ключевым словам искать.
Юзаю SQLObject. Из http запроса вытаскиваю имя класса (строкой), который есть потомок SQLObject. Как, имея некоторую строку, создать объект нужного класса, чтобы в последствии вызвать у этого объекта метод select() для выбора всех объектов из бд? Может такое уже в самой SQLObject реализовано?
PooH
ну что-то вроде этого:
import model
obj = getattr(model, name)()
PS: предполагается что классы описаны у вас в модуле model
pasaranax
можно с помощью exec, например:
name = "str"
exec "s = " + name + "()"
print s.__class__
выведет <type ‘str’>
ZZZ
pasaranax
можно с помощью exec, например:
Скорее уж eval…
>>> name = "str"
>>> s = eval(name + '()')
>>> print s.__class__
<type 'str'>
Но пример PooH'а более безопасный. А то если name будет равно какому-нить 'lambda *a, **k: ', то сервер может не понять этого и обидеться…
CJay
Огромное СПАСИБО! То, что надо!
pythonwin
думаю так будет более правильно:
from sqlobject import classregistry
soClass = classregistry.findClass(ClassName)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB