Python类调用
我正在用Python编写和调用全新的类。我创建了一个类,我也在尝试调用它Python类调用,python,oop,Python,Oop,我正在用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.rowf
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()
它给了我这个错误
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)
调用类来创建对象的正确语法是什么?这两个函数应该有自己的类吗 你打错电话了
PDFheader = writePDF(pdffn,hname,20,PDFdicE,10,line)
PDFrow = PDFheader.rows(sorte,fields,530,10,530)
实例化该类后,需要使用创建的类*PDFheader调用该方法“这只是一个简单的建议,您应该遵循python惯例,以大写字母
WritePDF
命名类,以小写字母开头命名实例,并在单词pdf\u行
之间使用下划线。”。这将有助于避免名称冲突。行
函数可能不应该在类中,因为它从不使用self
。它是完全独立的。所以它应该是它自己的类或者只是独立的函数?类名也应该是名词(PDFWriter
),而不是动词。动词表示方法名。另外,rows方法使用了一个名为c
的变量,但该变量不存在,这可能是一个错误。另一个注意事项是,您可能应该研究PEP8 Python约定,因此您的代码有点“漂亮”
PDFheader = writePDF(pdffn,hname,20,PDFdicE,10,line)
PDFrow = PDFheader.rows(sorte,fields,530,10,530)