Я использую NamedTuple для определения сервера, к которому я хочу подключиться с помощью telnetlib. Затем я создал класс, который определяет подключение к серверу, с деталями сервера и методом подключения внутри класса. Затем вне класса я хочу использовать метод подключения с сервером NamedTuple в качестве учетных данных для подключения. Однако я продолжаю получать сообщение об ошибке, что в методе подключения отсутствует аргумент NamedTuple.
Я попытался вытащить NamedTuple за пределы класса, попытался поместить Namedtuple в метод инициализации класса. ничего не работает.
Это мой код:
import telnetlib
from typing import NamedTuple
class Unit(NamedTuple):
name: str
ip: str
port: str
def printunit(self, unit):
print(unit.name)
print(unit.ip)
print(unit.port)
class TnCnct:
Server1 = Unit("Server1", "1.1.1.1", "23")
Server2 = Unit("Server2", "2.2.2.2", "23")
Server3 = Unit("Server3", "3.3.3.3", "23")
def __init__(self):
pass
def cnct(self, u):
try:
tn = telnetlib.Telnet(u.ip, u.port, 10)
tn.open(u.ip, u.port)
tn.close()
response = u.name + " " + "Success!"
except Exception as e:
response = u.name + " " + "Failed!"
print(e)
finally:
print(response)
TnCnct.cnct(TnCnct.Server1)
Точная ошибка, которую я получаю:
TypeError: cnct() missing 1 required positional argument: 'u'