Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 22, 2008 13:26:59

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

подскажите как правильно организовать работу с классом?

Всем привет,
подскажите как правильно организовать работу с классом. Нужно обеспечить генерацию pdf в django. Допустим есть класс Label, для простоты он рисует прямоугольник. Как правильно организовать класс Label и его вызвать?

class Label:
def __init__(self, c):
c.rect(0, 0, 200, 200, fill=0)
return c

def hello_word(request):
response = HttpResponse(mimetype='application/pdf')
response['Content-Disposition'] = 'filename=somefilename.pdf'
c = canvas.Canvas(response, pagesize=page_size)
label1 = Label(c)
return response
Хочется создать отдельный класс Label, в котором потом разместить код генерирующий pdf.
P.S. понимаю что код - выше написан неверно, но не могу сообразить как правильно организовать. Код написанный выше возвращает 0 байт!



Офлайн

#2 Дек. 22, 2008 14:59:54

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

подскажите как правильно организовать работу с классом?

__init__ - это конструктор класса, в нем лучше ничего не возвращать =)
Да и в этой строке, у тебя объект создаеться, но исчезает сразу: c.rect(0, 0, 200, 200, fill=0)
Чтоб не исчезал, надо его чемунибудь присвоить.

Что-то вроде этого получается:

class Label:
def __init__(self, c):
self.c = c
def label(self):
new_c = self.c.rect(0, 0, 200, 200, fill=0)
return new_c



Отредактировано (Дек. 22, 2008 15:01:03)

Офлайн

#3 Дек. 22, 2008 15:27:26

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

подскажите как правильно организовать работу с классом?

> __init__ - это конструктор класса
Это не конструктор. А вот __new__ является конструктором.
В момент вызова __init__ экземпляр уже существует, этот метод призван настроить атрибуты перед первым использованием экземпляра. Является не обязательным.

def Label(c):
new_c = self.c.rect(0, 0, 200, 200, fill=0)
return new_c
:-)

..bw



Офлайн

#4 Дек. 22, 2008 15:36:32

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

подскажите как правильно организовать работу с классом?

bw
Это не конструктор. А вот __new__ является конструктором.
Вопрос терминологии, но общепринято называть конструктором - __init__.
ИМХО: хоть __init__ и не совсем конструктор, но другие еще менее констуркторы %)



Отредактировано (Дек. 22, 2008 15:43:43)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version