Принимает ровно 3 аргумента (4 дано)
Я рефакторинг кода, чтобы добавить объектную ориентацию, и я просто тестирую код.
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
При создании экземпляра класса ниже я получаю странную ошибку. Что getip() принимает ровно 3 аргумента (4 дано), которые я не знаю, как решить.
for theline in f:
if "Failed password" in theline:
lineclass = Lineobject(pattern, theline)
else:
pass
2 ответа
Вы даете self.getip()
четыре аргумента, потому что Python автоматически добавляет в первую очередь self
аргумент для связанных методов. Выражение:
self.getip(self, pattern, line)
результаты в:
getip(self, self, pattern, line)
что четыре аргумента.
Не проходите в self
снова:
self.ip = self.getip(pattern, line)
Сам акт поиска метода в экземпляре (через self.getip
) связывает метод для обработки этого первого аргумента для вас.
При вызове метода экземпляра вы не передаете экземпляр явно
то есть.
self.ip = self.getip(pattern, line)