CJay
Июль 9, 2009 12:11:44
Здравствуйте, заранее извиняюсь, не могу воспользоваться гуглом из-за того, что не знаю, по каким ключевым словам искать.
Юзаю SQLObject. Из http запроса вытаскиваю имя класса (строкой), который есть потомок SQLObject. Как, имея некоторую строку, создать объект нужного класса, чтобы в последствии вызвать у этого объекта метод select() для выбора всех объектов из бд? Может такое уже в самой SQLObject реализовано?
PooH
Июль 9, 2009 12:20:48
ну что-то вроде этого:
import model
obj = getattr(model, name)()
PS: предполагается что классы описаны у вас в модуле model
pasaranax
Июль 9, 2009 12:37:58
можно с помощью exec, например:
name = "str"
exec "s = " + name + "()"
print s.__class__
выведет <type ‘str’>
ZZZ
Июль 9, 2009 13:45:27
pasaranax
можно с помощью exec, например:
Скорее уж eval…
>>> name = "str"
>>> s = eval(name + '()')
>>> print s.__class__
<type 'str'>
Но пример
PooH'а более безопасный. А то если name будет равно какому-нить '
lambda *a, **k: ', то сервер может не понять этого и обидеться…
CJay
Июль 9, 2009 14:38:52
Огромное СПАСИБО! То, что надо!
pythonwin
Июль 10, 2009 12:09:42
думаю так будет более правильно:
from sqlobject import classregistry
soClass = classregistry.findClass(ClassName)