Найти - Пользователи
Полная версия: Создание объектов
Начало » Python для новичков » Создание объектов
1
ilshat
Хочу реализовать автоматизированное создание объектов - классов синглтонов

И назрела проблема. Не могу найти способ - создание объекта при помощи строковой переменной в которой содержится название класса

class line:
    def paint(self):
        pass
# нужна функция для создания объекта при передачи строки с именем класса
lineObj=someClass.createObj('line')

Нужно что то наподобие этой функции createObj() на вход которой подавалась бы только одна строковая переменная с именем класса.

Буду очень благодарен за помощь.
FishHook
# -*- 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
ilshat
То что нужно. Спасибо
lorien
Если на вход подаётся имя уже описанного где-то класса, то можно просто проимпортировать класс из нужного модуля. Например, все классы описаны в lib.py и мы получили на вход строку “FooClass”, делаем так:

import lib
class_name = 'FooClass'
cls = getattr(lib, class_name)
obj = cls()
ilshat
Не знал что класс является атрибутом модуля.
Спасибо. Думаю мне это пригодится.
lorien
Аттрибутами модуля являются все объекты, описанные в модуле.
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