Форум сайта python.su
Всем привет,
подскажите как правильно организовать работу с классом. Нужно обеспечить генерацию 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
Офлайн
__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)
Офлайн
> __init__ - это конструктор класса
Это не конструктор. А вот __new__ является конструктором.
В момент вызова __init__ экземпляр уже существует, этот метод призван настроить атрибуты перед первым использованием экземпляра. Является не обязательным.
def Label(c):
new_c = self.c.rect(0, 0, 200, 200, fill=0)
return new_c
Офлайн
bwВопрос терминологии, но общепринято называть конструктором - __init__.
Это не конструктор. А вот __new__ является конструктором.
Отредактировано (Дек. 22, 2008 15:43:43)
Офлайн