python函数作为类属性 - AttributeError:对象没有属性

时间:2015-03-27 16:20:14

标签: python attributeerror

我有python模块' test.p' y with function' threads'接受功能' ping'作为按预期工作的论据

def ping(ip):
    print "ping", ip

def port(ip):
    print "port", ip

def threads(conn, ip):
    conn(ip)

ping('address')
threads(ping, 'address')

给我输出ping('地址')与线程相同(ping,'地址')

  

python test.py

     

ping地址

     

ping地址

现在我需要更换功能线程'与班级'线程'并使用功能' ping'作为不起作用的类属性

def ping(ip):
    print "ping", ip

def port(ip):
    print "port", ip

class Threads():
    def __init__(self, func, addr):
        self.conn = func
        self.ip = addr

    def popqueue(self):
        print "popqueue"

    def dequeue(self):
        self.popqueue()
        self.conn(self.ip)

    def start(self):
        self.dequeue()


ping('address')

threads = Threads(ping, 'address')
threads.start()

,这会产生以下错误:

  

python rep2.py

     

追踪(最近的呼叫最后):
  文件" rep2.py",第78行,在threads.start()中   文件" rep2.py",第42行,在start self.dequeue()中   文件" rep2.py",第39行,出列自身.conn()

     

AttributeError:'线程'对象没有属性' conn'

我该如何正确地做到这一点?

2 个答案:

答案 0 :(得分:1)

您的代码似乎使用python 2.7.8正常工作。它给了我这个输出

ping address
popqueue
ping address

答案 1 :(得分:0)

发布的代码没有错。工作正常。

请注意,与您编写的内容相反,您设置了实例属性,而不是类属性。