我从reportlab的《用户指南》中复制并粘贴了构造函数方法,但这似乎并不正确。
错误:
encrypt = None
^
SyntaxError: invalid syntax
构造方法:
def __init__(self,filename,
pagesize=letter,
bottomup = 1,
pageCompression=0,
encoding=rl_config.defaultEncoding,
verbosity=0
encrypt=None):
完整代码(固定逗号):
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import letter
class PDF_Hello:
def hello(c):
c.drawString(100, 100, "Hello World")
def __init__(self, filename,
pagesize=letter,
bottomup=1,
pageCompression=0,
encoding=rl_config.defaultEncoding,
verbosity=0,
encrypt = None):
c = canvas.Canvas("hello.pdf")
PDF_object = PDF_Hello("Hello_world.pdf")
PDF_object.hello(c)
c.showPage()
c.save()
更新(在reportlab用户指南中的印刷错误上添加逗号之后):
我在NameError: name 'rl_config' is not defined
参数的默认值中遇到了encoding
,默认情况下应该可以使用。
答案 0 :(得分:1)
所有参数必须用逗号(,
)分隔。正如评论中已经提到的,在,
方法中,缺少用于分隔参数的__init__()
。
您的__init__()
方法应如下所示:
def __init__(self, filename, pagesize=letter, bottomup=1, pageCompression=0,
encoding=rl_config.defaultEncoding, verbosity=0, encrypt=None):
如您所见:现在,verbosity
和encrypt
之间有逗号。
来自Python docs的更多内容:
parameter_list :: = defparameter(“,” defparameter)* [“,” [parameter_list_starargs]] | parameter_list_starargs
在这里,您需要使用“,” (逗号)来分隔参数。