Форум сайта python.su
0
Хочу реализовать автоматизированное создание объектов - классов синглтонов
И назрела проблема. Не могу найти способ - создание объекта при помощи строковой переменной в которой содержится название класса
class line: def paint(self): pass # нужна функция для создания объекта при передачи строки с именем класса lineObj=someClass.createObj('line')
Отредактировано ilshat (Июль 2, 2013 07:28:02)
Офлайн
568
# -*- coding:utf-8 -*- class A(object): foo=3 cls="A" a = globals()[cls]() print a
class A(object): foo=3 cls="A" a = eval("%s()" % cls) print a
Офлайн
0
То что нужно. Спасибо
Офлайн
Если на вход подаётся имя уже описанного где-то класса, то можно просто проимпортировать класс из нужного модуля. Например, все классы описаны в lib.py и мы получили на вход строку “FooClass”, делаем так:
import lib class_name = 'FooClass' cls = getattr(lib, class_name) obj = cls()
Офлайн
0
Не знал что класс является атрибутом модуля.
Спасибо. Думаю мне это пригодится.
Офлайн
Аттрибутами модуля являются все объекты, описанные в модуле.
Офлайн