基本上,我想运行connect函数但是我一直收到CMD错误消息'类StraussBot没有属性' connectSock'但我显然可以看到它。我试过在这里搜索,我找不到任何解决这个问题的方法。因此,如果您能帮助我找到为什么找不到“连接锁定”,我们将不胜感激。功能
代码:
import socket
from config import HOST, PORT, CHANNEL
# User Info
USER = "straussbot" # The bots username
PASS = "oauth:sj175lp884ji5c9las089sm9vvaklf" # The auth code
class StraussBot:
def __init__(self):
self.Ssock = socket.socket()
def connectSock(self):
self.Ssock.connect((HOST, PORT))
self.Ssock.send(str("Pass " + PASS + "\r\n").encode('UTF-8'))
self.Ssock.send(str("NICK " + USER + "\r\n").encode('UTF-8'))
self.Ssock.send(str("JOIN " + CHANNEL + "\r\n").encode('UTF-8'))
if __name__ == "__main__":
print "Starting the bot..."
while True:
straussbot = StraussBot
try:
straussbot.connectSock()
except Exception as e:
print e
答案 0 :(得分:1)
您忘记实例化班级StraussBot
的对象。
straussbot = StraussBot
只需指定名称straussbot
即可引用课程StraussBot
。将该行更改为
straussbot = StraussBot()
实际创建一个类的实例。然后,您可以按预期调用该实例上的connectSock
方法。
答案 1 :(得分:1)
你对这里的错误感到困惑。由于您没有实例,因此AttributeError
获得self.Ssock
。
您只在此处创建了对该类的引用:
straussbot = StraussBot
您需要调用类来生成实例:
straussbot = StraussBot()
您还混合了标签和空格:
注意第5行到第9行如何在缩进中有行,但其余部分有点?这些是标签,Python将其视为 8个空格。因此,connectSock
方法在__init__
的内缩进,而不是StrausBot
上的方法。
您必须坚持只是标签或只是空格。 Python的样式指南强烈建议您仅使用空格。
答案 2 :(得分:0)
您混合了标签和空格。您可能认为StraussBot
类有connectSock
方法,但实际上您将connectSock
的定义嵌套在__init__
方法中。
在编辑器中启用“显示空白”以查看问题。可能有一个“转换标签到空格”选项,您可以使用它来自动修复它。使用-tt
选项运行Python将使Python在发生类似情况时通知您。
此外,您需要实际创建StraussBot
的实例,而不是仅仅将straussbot
设置为类本身:straussbot = StraussBot()
。