Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 属性错误:';发电机&x27;对象没有属性';连接';Pydle,Asyncio_Python_Python 3.x_Async Await_Python Asyncio - Fatal编程技术网

Python 属性错误:';发电机&x27;对象没有属性';连接';Pydle,Asyncio

Python 属性错误:';发电机&x27;对象没有属性';连接';Pydle,Asyncio,python,python-3.x,async-await,python-asyncio,Python,Python 3.x,Async Await,Python Asyncio,正在尝试将pydle与asyncio一起使用。几个月前,我的代码运行得很好,现在我无法再运行了 @asyncio.coroutine class MyOwnBot(pydle.Client): async def on_connect(self): await self.join('#new') iclient = MyOwnBot('testeee', realname='tester') loop = asyncio.get_event_loop() asynci

正在尝试将pydle与asyncio一起使用。几个月前,我的代码运行得很好,现在我无法再运行了

@asyncio.coroutine
class MyOwnBot(pydle.Client):
     async def on_connect(self):
        await self.join('#new')

iclient = MyOwnBot('testeee', realname='tester')
loop = asyncio.get_event_loop()
asyncio.ensure_future(iclient.connect('irc.test.net', 6697, tls=True,tls_verify=False), loop=loop)
但我得到了这个错误:

asyncio.ensure_future(iclient.connect('irc.test.net', 6697, tls=True, tls_verify=False), loop=loop)
AttributeError: 'generator' object has no attribute 'connect'

pydle
库。此外,将整个班级标记为协同课程也不起作用;类不是工作单元,类上的方法是

为确保跨python版本的兼容性,该库包括:


Client.connect()
方法启动循环(但是如果需要在其他地方使用相同的循环,可以传入一个循环)。

为什么要使整个类成为一个协程?从类中删除
@asyncio.coroutine
装饰程序。然后我会得到一个额外的错误。第520行,在Sure_future raise TypeError(“需要一个未来、一个协同程序或一个可等待的”)中,TypeError:需要一个未来、一个协同程序或一个可等待的程序。所以我想我应该继续合作。不,你不应该。我们可以在不使用它的情况下解决您遇到的下一个问题。您确定
pydle.Client.connect()
方法是可以等待的吗?也许他们会处理自己的循环?我想这是因为几周前整个代码都正常工作了。但我必须转换系统。到目前为止,这对我来说是可行的,但我想在discord和IRC之间架起一座桥梁。遗憾的是,这不起作用,但无法找出原因。可能是因为自己的处理模块?@Kenny:
iclient.connect()
接受一个循环参数,可能是共享您创建的循环?您能给我一个示例吗?我不太清楚你是什么意思。@Kenny:the接受一个
eventloop
参数。将
eventloop=loop
添加到
iclient.connect()
调用以共享loop.self.eventloop.register(self.socket.fileno())AttributeError:“\u UnixSelectorEventLoop”对象没有属性“register”
import pydle

class MyOwnBot(pydle.Client):
    @pydle.coroutine
    def on_connect(self):
        yield self.join('#new')

iclient = MyOwnBot('testeee', realname='tester')
iclient.connect('irc.test.net', 6697, tls=True, tls_verify=False)