基本上,我想运行connect函数,但是我一直收到CMD错误消息“类StraussBot没有属性” connectSock”,但显然可以看到。我尝试在此处进行搜索,但找不到该问题的任何解决方案。因此,如果您能帮助我找到为什么找不到“ 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

最佳答案

您对这里的错误感到困惑。您获得AttributeErrorself.Ssock,因为您没有实例。

您仅在此处创建对该类的引用:

straussbot = StraussBot


您需要调用该类以产生一个实例:

straussbot = StraussBot()


您还将混合制表符和空格:

python - Python类找不到属性-LMLPHP

请注意,第5至9行在缩进中有行,而其余的有点吗?这些是制表符,Python将其视为8个空格。因此,您的connectSock方法在__init__内缩进,而不是StrausBot上的方法。

您必须只使用制表符或空格。 Python的样式指南强烈建议您仅使用空格。

10-08 18:24