Takes exactly 3 arguments (4 given)
14,933
Solution 1
You are giving self.getip()
four arguments because Python automatically adds in first self
argument for bound methods. The expression:
self.getip(self, pattern, line)
results in:
getip(self, self, pattern, line)
which is four arguments.
Don't pass in self
again:
self.ip = self.getip(pattern, line)
The very act of looking up the method on the instance (via self.getip
) binds the method to handle that first argument for you.
Solution 2
When calling an instance method, you don't pass the instance explicitly
ie.
self.ip = self.getip(pattern, line)
Author by
Admin
Updated on June 04, 2022Comments
-
Admin almost 2 years
i'm refactoring code in order to add object orientation and am just testing the code.
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
When instantiating the class below I am getting an odd error. That of getip() takes exactly 3 arguments (4 given) which i do not know how to resolve.
for theline in f: if "Failed password" in theline: lineclass = Lineobject(pattern, theline) else: pass