Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python类调用_Python_Oop - Fatal编程技术网

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

我正在用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()
它给了我这个错误

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)