Python类无法找到属性
问题描述:
基本上,我想运行连接功能,但我不断收到CMD错误消息'类StraussBot没有属性'connectSock',但我可以明显地看到它的确如此。我试过在这里搜索,我找不到解决这个问题的任何解决方案。所以,如果你能帮助我找到为什么没有找到'connectSock'函数,将会非常感激。Python类无法找到属性
代码:
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
答
你忘了实例化StraussBot
类的对象。
straussbot = StraussBot
刚分配的名称straussbot
来引用类StraussBot
。将该行更改为
straussbot = StraussBot()
实际上将创建您的类的实例。然后您可以按照预期的方式在该实例上调用connectSock
方法。
+0
然而,这不是唯一的错误。 –
答
你已经混合了制表符和空格。你可能会认为你的StraussBot
类有一个connectSock
方法,但你实际上把connectSock
的定义嵌套在__init__
方法中。
在编辑器中打开“显示空白”以查看问题。可能会有一个“将制表符转换为空格”选项,您可以使用它自动进行自动填充。使用-tt
选项运行Python将使Python在这种情况发生时通知您。
另外,您需要实际创建一个StraussBot
的实例,而不是将straussbot
设置为该类本身:straussbot = StraussBot()
。
'straussbot = StraussBot()',你失踪parens。 –
在您的主要区块中,您将'straussbot'设置为_class_ StraussBot,而不是_instance_类。 – ajwood