Class 定义 required_arg, *args, **kwargs
Class definition with required_arg, *args, **kwargs
我想使用一个 required_arg 除了 *args,**kwargs 在来自另一个 class 的 class 中。但是目前我没有成功!!!
这段代码:
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)
:
canvas.Canvas.__init__(self, *args, **kwargs)
TypeError: __init__() takes at least 2 arguments (1 given)
如何使用 page1
参数调用 PageNumCanvas class?
更新 #1:
如果我在 class 的 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
>>>
您可能正在寻找
canvas.Canvas.__init__(self, page1, *args, **kwargs)
根据示例here,您需要在实例化时提供名称canvas.Canvas()
。
你的第二个版本没有给你错误的原因是你仍在传递 1
,它被传递给 Canvas
构造函数,因为你删除了 page1
参数.
为了使其正常工作,您只需输入名称和页码即可:
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
输出
0
我想使用一个 required_arg 除了 *args,**kwargs 在来自另一个 class 的 class 中。但是目前我没有成功!!! 这段代码:
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)
:
canvas.Canvas.__init__(self, *args, **kwargs)
TypeError: __init__() takes at least 2 arguments (1 given)
如何使用 page1
参数调用 PageNumCanvas class?
更新 #1:
如果我在 class 的 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
>>>
您可能正在寻找
canvas.Canvas.__init__(self, page1, *args, **kwargs)
根据示例here,您需要在实例化时提供名称canvas.Canvas()
。
你的第二个版本没有给你错误的原因是你仍在传递 1
,它被传递给 Canvas
构造函数,因为你删除了 page1
参数.
为了使其正常工作,您只需输入名称和页码即可:
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
输出
0