【发布时间】:2012-07-16 16:40:05
【问题描述】:
我正在尝试通过 telnet 连接到实验室仪器。我想从标准库中的telnetlib 模块扩展Telnet 类,以包含特定于我们仪器的功能:
import telnetlib
class Instrument(telnetlib.Telnet):
def __init__(self, host=None, port=0, timeout=5):
super(Instrument,self).__init__(host, port, timeout)
我在这段代码中要做的就是从父类 (telnetlib.Telnet) 继承 __init__ 方法并传递标准参数,以便稍后我可以向 __init__ 添加内容。这个公式在其他场合对我有用;这一次,当我尝试实例化时,它在super() 语句中给了我一个错误:
TypeError: must be type, not classobj
我查看了 telnetlib 的源代码,Telnet 似乎是一个老式类(它不是从 object 继承的) - 我想知道这是否是我的问题的根源?如果是这样,如何克服?我看过一些代码示例,其中派生类继承自超类和object,尽管我不完全确定这是否是对与我相同的问题的回应。
完全披露:我还尝试使用telnetlib.Telnet 代替super(),并使用from telnetlib import Telnet 和Telnet 代替super()。在这些情况下问题仍然存在。
谢谢!
【问题讨论】:
标签: python inheritance telnet