Уведомления

Группа в Telegram: @pythonsu

#1 Июль 2, 2013 07:27:03

ilshat
Зарегистрирован: 2013-07-02
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Создание объектов

Хочу реализовать автоматизированное создание объектов - классов синглтонов

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

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

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

Буду очень благодарен за помощь.

Отредактировано ilshat (Июль 2, 2013 07:28:02)

Офлайн

#2 Июль 2, 2013 07:39:18

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Создание объектов

# -*- 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



Офлайн

#3 Июль 2, 2013 07:43:11

ilshat
Зарегистрирован: 2013-07-02
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Создание объектов

То что нужно. Спасибо

Офлайн

#4 Июль 2, 2013 08:39:22

lorien
От:
Зарегистрирован: 2006-08-20
Сообщения: 755
Репутация: +  37  -
Профиль  

Создание объектов

Если на вход подаётся имя уже описанного где-то класса, то можно просто проимпортировать класс из нужного модуля. Например, все классы описаны в lib.py и мы получили на вход строку “FooClass”, делаем так:

import lib
class_name = 'FooClass'
cls = getattr(lib, class_name)
obj = cls()

Офлайн

#5 Июль 2, 2013 19:21:30

ilshat
Зарегистрирован: 2013-07-02
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Создание объектов

Не знал что класс является атрибутом модуля.
Спасибо. Думаю мне это пригодится.

Офлайн

#6 Июль 2, 2013 20:40:16

lorien
От:
Зарегистрирован: 2006-08-20
Сообщения: 755
Репутация: +  37  -
Профиль  

Создание объектов

Аттрибутами модуля являются все объекты, описанные в модуле.

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version