初学者的python类构造函数没有任何争论

fis*_*rds 1 python class

我只是在学习python,似乎犯了一个微不足道的错误.使用此代码,使用构造函数来获取模式获取和错误.

"cit_ref = Patterns(patstring,3)TypeError:这个构造函数不带参数"

import re

class Patterns:
    """A simple struct to hold our regex """
def __init__(self, pat, bodynumArg=2):
    self.pat = pat
    self.bodynum = bodynumArg
    self.reg = re.compile(self.pat, re.M+re.S)

patstring = r'<((us-)?references-cited)>(.*?)</\1>'
cit_ref = Patterns( patstring, 3)
Run Code Online (Sandbox Code Playgroud)

Mat*_*ams 5

你只需缩进你的__init__功能就可以了class Patterns.像这样:

import re

class Patterns:
    """A simple struct to hold our regex """
    def __init__(self, pat, bodynumArg=2):
        self.pat = pat
        self.bodynum = bodynumArg
        self.reg = re.compile(self.pat, re.M+re.S)

patstring = r'<((us-)?references-cited)>(.*?)</\1>'
cit_ref = Patterns( patstring, 3)
Run Code Online (Sandbox Code Playgroud)

在Python中,缩进与其他语言中的括号/大括号基本相同 - 它们分隔代码,因此您必须小心缩进.

  • 难怪它看起来是正确的 - 我只是假设OP在使用SO标记方面遇到了麻烦,就像很多人一样.没有文档字符串的类会使错误更加明显,这很有趣. (2认同)
  • 我想这就是为什么这里有这么多人坚持"永不编辑问题中的代码"的原因:) (2认同)