arc*_*gel 3 python arguments class self
我正在重构代码以添加面向对象而我只是测试代码.
pattern = r"((([01]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])[ (\[]?(\.|dot)[ )\]]?){3}([01]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5]))"
class Lineobject(object):
def __init__(self, pattern, line):
self.ip = self.getip(self, pattern, line)
def getip (self, pattern, line):
for match in re.findall(pattern, line):
results = ''
ips = match[0]
usergeneratedblacklist.write(ips)
usergeneratedblacklist.write('\n')
return ips
Run Code Online (Sandbox Code Playgroud)
在实例化下面的类时,我得到一个奇怪的错误.那个getip()需要3个参数(4个给定),我不知道如何解决.
for theline in f:
if "Failed password" in theline:
lineclass = Lineobject(pattern, theline)
else:
pass
Run Code Online (Sandbox Code Playgroud)
您提供了self.getip()四个参数,因为Python会自动self为绑定方法添加第一个参数.表达方式:
self.getip(self, pattern, line)
Run Code Online (Sandbox Code Playgroud)
结果是:
getip(self, self, pattern, line)
Run Code Online (Sandbox Code Playgroud)
这是四个论点.
不要self再次传递:
self.ip = self.getip(pattern, line)
Run Code Online (Sandbox Code Playgroud)
在实例上查找方法的行为(via self.getip)绑定方法来为您处理第一个参数.