Я - совершенно новые классы записи и вызова в Python. У меня есть класс, который я создал, и я пытаюсь тоже назвать этовызов класса Python
class writePDF(object):
def __init__(self,pdfn,hname,hnfont,PDFdic,rowfont,line):
self.pdfn = pdfn
self.hname = hname
self.hnfont = hnfont
self.PDFdic = PDFdic
self.rowfont = rowfont
self.line = line
def header(self):
c = canvas.Canvas(self.pdfn, pagesize=landscape(legal))
c.setFontSize(self.hnfont),c.drawCentredString(500, 585, self.hname)
for k,v in self.PDFdic.items():
c.setFontSize(self.rowfont)
c.drawString(v[0],v[1],k)
c.line(self.line)
def rows(self,layer,fields,loc,fs,locbreak,locreset):
loc = loc
counter = 0
for row in arcpy.da.searchCursor(layer,fields):
c.setFontSize(fs)
c.drawString(5, loc, null(row[0]))
c.drawString(25, loc, null(row[1]))
c.drawString(180, loc, null(row[2]))
c.drawString(320, loc, null(row[3]))
c.drawString(440, loc, null(row[4]))
c.drawString(500, loc, null(row[5]))
c.drawString(550, loc, null(row[6]))
c.drawString(590, loc, null(row[7]))
c.drawString(650, loc, null(row[8]))
c.drawString(700, loc, null(row[9]))
c.drawString(760, loc, null(row[10]))
c.drawString(830, loc, null(row[11]))
c.drawString(890, loc, null(row[12]))
c.drawString(940, loc, null(row[13]))
loc = loc-13
if loc <= locbreak:
c.showPage()
self.header()
loc = locreset
c.save()
, когда я называю его:
PDFheader = writePDF(pdffn,hname,20,PDFdicE,10,line)
PDFrow = writePDF.rows(sorte,fields,530,10,530)
это дает мне эту ошибку
PDFrow = writePDF.rows(sorte,fields,530,10,530)
TypeError: unbound method rows() must be called with writePDF instance as first argument (got Result instance instead)
что такое правильный синтаксис для вызвать класс для создания объекта? должны ли у двух функций быть собственные классы?
Только быстрое предложение, вы должны следовать python и назовите свои классы, начиная с прописных букв «WritePDF» и ваших экземпляров, начиная с нижнего регистра, и используя символы подчеркивания между словами «pdf_row». Это поможет избежать коллизий имен. – Soviut
Функция 'rows', вероятно, не должна находиться в класс, поскольку он никогда не использует 'self'. Он полностью автономный. – RemcoGerlich
, поэтому он должен быть таким же r - собственный класс или просто автономная функция? – ziggy