我完全在编写代码,更不用说python了。我使用以下代码遇到此错误。
文件名是abcd.py
class device():
def login(self,ip):
self.tn= telnetlib.Telnet(ip)
self.tn.read_until("login: ")
self.tn.write(login)
def sendcommand(self,command):
self.sendcommand= self.tn.write(command)
此python代码由另一个文件导入。
from abcd import *
def foo():
ip = 'ip address'
dev1 = switch()
dev1.login(ip)
dev1.sendcommand('cmd1')
dev1.sendcommand('cmd2')
foo()
当我调用foo函数时,一切都正确执行,直到我们到达dev1.sendcommand('cmd2')
。收到的错误是
dev1.sendcommand('cmd2')
TypeError: 'NoneType' object is not callable
我根本不知道为什么会发生这种情况。我是否以某种方式修改了对象?
答案 0 :(得分:2)
是。执行self.sendcommand= self.tn.write(command)
后,您将使用值sendcommand
覆盖方法self.tn.write(command)
。为变量使用与方法不同的名称。
答案 1 :(得分:0)
问题似乎在于 -
def sendcommand(self,command):
self.sendcommand= self.tn.write(command)
您正在将writer()的返回值设置为self.sendcommand,它正在覆盖该函数,您不应该这样做,只需调用该函数,而无需在任何地方设置返回值。示例 -
def sendcommand(self,command):
self.tn.write(command)