Найти - Пользователи
Полная версия: подскажите как правильно организовать работу с классом?
Начало » Python для новичков » подскажите как правильно организовать работу с классом?
1
qman
Всем привет,
подскажите как правильно организовать работу с классом. Нужно обеспечить генерацию 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 байт!
shiza
__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
bw
> __init__ - это конструктор класса
Это не конструктор. А вот __new__ является конструктором.
В момент вызова __init__ экземпляр уже существует, этот метод призван настроить атрибуты перед первым использованием экземпляра. Является не обязательным.

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

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