0

我正在尝试编写一个 Python(3.3,如果它有所不同)类,它将通过 telnet 连接与调制解调器通信。基本上,不同的命令将根据用户输入发送到调制解调器,我想在程序执行期间保持 telnet 连接打开。可能值得注意的是,这是我第一次使用 Python,来自 C# 和 Java 背景,所以我仍在努力掌握它的窍门。

无论如何,我想我对 OO 概念了解得不多,所以我想问这个:有没有一种首选方法可以在同一个类的多个方法中重用持久 telnet 连接?另外,将代码放在当前是否_login可取__init__?我将给出一些代码示例:

选项A:传递tn_login

class Communicator:
    tn = telnetlib.Telnet()

    def __init__(self, host, port, user, password):
        self._login(user, password)

    def _login(self, host, port, user, password, conn=tn):
        conn.open(host, port)
        conn.read_until("Username: ")
        conn.write(user.encode('ascii') + b"\r\n")
        conn.read_until("Password: ")
        conn.write(password.encode('ascii') + b"\r\n")

选项B:_login有用self.tn

class Communicator:
    tn = telnetlib.Telnet()

    def __init__(self, host, port, user, password):
        self._login(user, password)

    def _login(self, host, port, user, password):
        self.tn.open(host, port)
        self.tn.read_until("Username: ")
        self.tn.write(user.encode('ascii') + b"\r\n")
        self.tn.read_until("Password: ")
        self.tn.write(password.encode('ascii') + b"\r\n")

选项C:别的?

我总是乐于接受建议。就像我说的,这是我第一次玩 Python,我应该练习 Python 的做事方式。

4

0 回答 0