Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 19, 2008 11:52:18

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

как в цикле динамически создать объекты ? указать уникальное имя

Всем привет,
есть такой линейный код:

    MyFontObject = ttfonts.TTFont('Times', os.path.join(settings.FONT_DIR, 'timesi.ttf'))
pdfmetrics.registerFont(MyFontObject)
FontV100001 = ttfonts.TTFont('V100001', os.path.join(settings.FONT_DIR, 'V100001_.TTF'))
pdfmetrics.registerFont(FontV100001)
FontSlip_code = ttfonts.TTFont('slip_code', os.path.join(settings.FONT_DIR, 'Slip_code.ttf'))
pdfmetrics.registerFont(FontSlip_code)
хочу сделать его более красивым, например сделать словарь
    font_dict = {'Times': 'timesi.ttf', 'V100001': 'V100001_.TTF', 'slip_code': 'Slip_code.ttf'}
и перебором значений создать объекты шрифтов
    for font_name, filename_font in font_dict.items():
font_name = ttfonts.TTFont(font_name, os.path.join(settings.FONT_DIR, filename_font))
в таком коде reportlab не генерит pdf!!! Интерпретатор об ошибке (исключении) не сообщает . Могу предположить - потому что font_name определена как строка.
Как правильно переписать строку в цикле, чтобы создавали имена объектов, у которых имена соответствуют ключам в словаре?
P.S. надеюсь смог понятно сформулировать вопрос



Отредактировано (Дек. 19, 2008 11:56:17)

Офлайн

#2 Дек. 19, 2008 12:01:35

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

как в цикле динамически создать объекты ? указать уникальное имя

вы в куске кода с перебором словаря строчку

    pdfmetrics.registerFont(font_name)
забыли сюда скопировать или забыли написать?



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#3 Дек. 19, 2008 12:32:19

bw
От:
Зарегистрирован: 2007-09-26
Сообщения: 938
Репутация: +  20  -
Профиль   Адрес электронной почты  

как в цикле динамически создать объекты ? указать уникальное имя

И вряд ли является адекватным использование имя font_name для шрифта, font_name скорее указывает на имя шрифта, чем на сам шрифт. Можно делать и font = … для таких целей.

p.s. В остальном PooH всё правильно сказал. Будьте внимательнее впредь.

..bw



Отредактировано (Дек. 19, 2008 12:33:32)

Офлайн

#4 Дек. 22, 2008 12:12:03

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

как в цикле динамически создать объекты ? указать уникальное имя

PooH
вы в куске кода с перебором словаря строчку
Код:
pdfmetrics.registerFont(font_name)
забыли сюда скопировать или забыли написать?
Точно, забыл вписать. С ней все работает!



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version