具有所需的\u arg、*args、**kwargs的类定义

2024-09-30 03:23:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我想使用一个必需的_arg除了*args,**kwarg在一个来自另一个类的类中。但目前我没有成功!!! 这段代码:

class PageNumCanvas(canvas.Canvas):
    "For  add \"page number of total\" in each footer."

    def __init__(self, page1, *args, **kwargs):
        "Constructor."
        self.page1 = page1 - 1
        canvas.Canvas.__init__(self, *args, **kwargs)
        self.pages = []

执行此操作时的错误消息:canvasmaker = PageNumCanvas(1)

^{pr2}$

如何使用page1参数调用PageNumCanvas类?在

更新1:

如果我不在类的init中使用参数,我就没有问题了。例如:

>>> from reportlab.pdfgen import canvas
>>> class PageNumCanvas(canvas.Canvas):
...     "For  add \"page number of total\" in each footer."
...     def __init__(self, *args, **kwargs):
...             canvas.Canvas.__init__(self, *args, **kwargs)
...             self.pages = []
... 
>>> canvasmaker = PageNumCanvas(1)
>>> canvasmaker
<__main__.PageNumCanvas instance at 0x7f618195df38>
>>> 

更新2: 多亏了goncalopp让路,正确的代码是:

class PageNumCanvas(canvas.Canvas):
...     "For  add \"page number of total\" in each footer."
...     def __init__(self, page1, *args, **kwargs):
...             "Constructor."
...             canvas.Canvas.__init__(self, page1, *args, **kwargs)
...             self.page1 = page1 - 1
...             self.pages = []
...             print self.page1
... 
>>> canvasmaker = PageNumCanvas(12)
11
>>> 

Tags: ofselfaddnumberforinitpageargs
2条回答

你可能在找

canvas.Canvas.__init__(self, page1, *args, **kwargs)

{1}你需要提供一个{1}的例子。在

您的第二个版本没有给您错误的原因是您仍然在传递1,因为您删除了page1参数,所以它被传递给了Canvas构造函数。在

要使其正常工作,只需输入名称和页码:

from reportlab.pdfgen import canvas
class PageNumCanvas(canvas.Canvas):
    "For  add \"page number of total\" in each footer."

    def __init__(self, page1, *args, **kwargs):
        "Constructor."
        self.page1 = page1 - 1
        canvas.Canvas.__init__(self, *args, **kwargs)
        self.pages = []

canvasmaker = PageNumCanvas(1, "Hello.pdf")
print canvasmaker.page1

输出

^{pr2}$

相关问题 更多 >

    热门问题