【发布时间】:2017-08-26 05:05:26
【问题描述】:
我不知道为什么它认为这个函数变量是list。编译时此代码的第 41 行(在addPoint() 函数中)出现问题。我尝试使用 user 全局变量代替它,但它仍然不起作用。我觉得我缺少一些简单但无法确定的东西。
import praw
import time
import re
import pickle
from classes import User
USERAGENT = 'web:CredibilityBot:v0.1 (by /u/ThePeskyWabbit)'
FOOTER = "^^I ^^am ^^a ^^bot! ^^I ^^am ^^currently ^^in ^^test ^^phase. ^^Read ^^about ^^me ^^[here](https://pastebin.com/jb4kBTcS)."
PATH = "C:\\Users\\JoshLaptop\\PycharmProjects\\practice\\commented.txt"
user = User.User("placeholder")
commentFile = open(PATH, 'rb')
commentList = commentFile.read().splitlines()
commentFile.close()
pkl = open("userpkl.pkl", 'rb')
pklList = []
try:
while(True):
pklList.append(pickle.load(pkl))
except EOFError:
pass
pkl.close()
nameList = []
try:
for data in pklList:
user = data
nameList.append(str(user.getName()))
except:
pass
print(pklList)
print(nameList)
def addPoint(userInstance, comment):
userInstance.addScore()
userInstance.addComment(comment)
message = "Bullshit noted! " + userInstance.getName() + " now has a Bullshit rating of \n\n" + userInstance.getScore() + FOOTER
return message
编写该方法的类如下:
import pickle
import praw
class User:
def __init__(self, username):
self.name = username
self.bsRating = 0
self.bsComments = []
def getName(self):
return self.name
def getScore(self):
return str(self.bsRating)
def resetScore(self):
self.bsRating = 0
def getComments(self):
return self.bsComments
def addComment(self, commentLink):
self.bsComments.append(commentLink)
def addScore(self):
self.bsRating = self.bsRating + 1
我的错误输出是:
File "C:/Users/JoshLaptop/PycharmProjects/practice/TestBot.py", line 63, in <module>
actions = {"!bullshit": addPoint(user, commentLink), "!bullshitrating": getRating(user), "!bullshitdetail":getCommentList(user)}
File "C:/Users/JoshLaptop/PycharmProjects/practice/TestBot.py", line 41, in addPoint
userInstance.addScore()
AttributeError: 'list' object has no attribute 'addScore'
【问题讨论】:
-
你在哪里打电话
addPoint? -
错误不言自明:您发送给
addPoint的第一个参数是list,而列表没有addScore功能 -
userInstance 不是一个列表。它没有任何价值,因为它是定义函数的占位符
-
问题已解决。是因为
user在被调用时被识别为列表。感谢您询问 ZdaR
标签: python list syntax attributes