我有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'
我该如何正确地做到这一点?
答案 0 :(得分:1)
您的代码似乎使用python 2.7.8正常工作。它给了我这个输出
ping address popqueue ping address
答案 1 :(得分:0)
发布的代码没有错。工作正常。
请注意,与您编写的内容相反,您设置了实例属性,而不是类属性。