TypeError:' NoneType'第二次引用对象时,对象不可调用

时间:2015-08-10 05:40:10

标签: python oop

我完全在编写代码,更不用说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

我根本不知道为什么会发生这种情况。我是否以某种方式修改了对象?

2 个答案:

答案 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)