Python 字典中的对象有问题?无法取回所有数据
Python issues with objects inside of dictionary? Cant get all data back out
抱歉,这是两天内的第二个 post.. 我正在为这个而烦恼。我正在尝试从 reddit 获取数据并将其放入一个数组中,我可以稍后将数据拉出供 tensorflow 解析它。现在的问题是我在另一个对象内的第二个对象没有给我里面的内容......“<main.Submission”为什么我要找回这个?
这个post的目标:
1:为什么我得到 <main.Submission> 以及我应该怎么做。
File "C:/automation/git/tensorflow/untitled0.py", line 35, in <module>
submissions[sm.id].addSubSubmission(Submission.addComment(cmt.id, cmt.author.name, cmt.body))
TypeError: addComment() missing 1 required positional argument: 'body'
对于冗长且很可能是基本的问题,我们深表歉意。从 powershell 到 python 并不像我想象的那么简单..
谢谢
科迪
import praw
# sets log in data for session
reddit = praw.Reddit(client_id='bY',
client_secret='v9',
user_agent='android:com.example.myredditapp:'
'v1.2.3 (by /u/r)')
class Submission(object):
def __init__(self, id, title, author):
self.id = id
self.title = title
self.subSubmission = {}
self.author = author
def addComment(self, id, author, body):
self.id = id
self.author = author
self.body = body
def addSubSubmission(self,submission):
self.subSubmission[submission,id] = submission
def getSubSubmission(self,id):
return self.subSubmission[id]
submissions = {}
for sm in reddit.subreddit('redditdev').hot(limit=2):
# pulls the ID and makes that the head of each
submissions[sm.id] = Submission(sm.id, sm.title, sm.author.name)
mySubmission = reddit.submission(id=sm.id)
mySubmission.comments.replace_more(limit=0)
# Get all the comments and first post and list their id author and body(comment)
for cmt in mySubmission.comments.list():
submissions[sm.id].addSubSubmission(Submission.addComment(cmt.id, cmt.author.name, cmt.body))
# My trying to read what all there??!? ##
for key in submissions.keys():
value = submissions[key]
print(key, "=", value)
for key, value in submissions.items():
print(key, "=", value)
期待看到:
{Title = test {comment.id = 1111 {Comment = 'blah', Author = 'Bob'}}
{comment.id = 1112 {Comment = 'blah2', Author = 'Bob2'}}
}
它返回给您整个提交对象 - 但是您正在打印它。打印时提交对象在屏幕上应该如何显示?这是您可以在提交 class 中定义的内容 - 查看此 post 中的第一个答案:Difference between __str__ and __repr__ in Python
进一步解释:python 不知道如何在屏幕上表示 class。当然,class 具有字符串、列表、字典等属性,但 python 知道如何打印这些。你刚刚创建的 class?什么重要?应该打印什么? python 不知道这一点,而且很聪明,不会做任何假设。
如果您将 __repr__
函数添加到 class,python 将调用它并打印该函数 returns。
抱歉,这是两天内的第二个 post.. 我正在为这个而烦恼。我正在尝试从 reddit 获取数据并将其放入一个数组中,我可以稍后将数据拉出供 tensorflow 解析它。现在的问题是我在另一个对象内的第二个对象没有给我里面的内容......“<main.Submission”为什么我要找回这个?
这个post的目标:
1:为什么我得到 <main.Submission> 以及我应该怎么做。
File "C:/automation/git/tensorflow/untitled0.py", line 35, in <module>
submissions[sm.id].addSubSubmission(Submission.addComment(cmt.id, cmt.author.name, cmt.body))
TypeError: addComment() missing 1 required positional argument: 'body'
对于冗长且很可能是基本的问题,我们深表歉意。从 powershell 到 python 并不像我想象的那么简单..
谢谢 科迪
import praw
# sets log in data for session
reddit = praw.Reddit(client_id='bY',
client_secret='v9',
user_agent='android:com.example.myredditapp:'
'v1.2.3 (by /u/r)')
class Submission(object):
def __init__(self, id, title, author):
self.id = id
self.title = title
self.subSubmission = {}
self.author = author
def addComment(self, id, author, body):
self.id = id
self.author = author
self.body = body
def addSubSubmission(self,submission):
self.subSubmission[submission,id] = submission
def getSubSubmission(self,id):
return self.subSubmission[id]
submissions = {}
for sm in reddit.subreddit('redditdev').hot(limit=2):
# pulls the ID and makes that the head of each
submissions[sm.id] = Submission(sm.id, sm.title, sm.author.name)
mySubmission = reddit.submission(id=sm.id)
mySubmission.comments.replace_more(limit=0)
# Get all the comments and first post and list their id author and body(comment)
for cmt in mySubmission.comments.list():
submissions[sm.id].addSubSubmission(Submission.addComment(cmt.id, cmt.author.name, cmt.body))
# My trying to read what all there??!? ##
for key in submissions.keys():
value = submissions[key]
print(key, "=", value)
for key, value in submissions.items():
print(key, "=", value)
期待看到:
{Title = test {comment.id = 1111 {Comment = 'blah', Author = 'Bob'}}
{comment.id = 1112 {Comment = 'blah2', Author = 'Bob2'}}
}
它返回给您整个提交对象 - 但是您正在打印它。打印时提交对象在屏幕上应该如何显示?这是您可以在提交 class 中定义的内容 - 查看此 post 中的第一个答案:Difference between __str__ and __repr__ in Python
进一步解释:python 不知道如何在屏幕上表示 class。当然,class 具有字符串、列表、字典等属性,但 python 知道如何打印这些。你刚刚创建的 class?什么重要?应该打印什么? python 不知道这一点,而且很聪明,不会做任何假设。
如果您将 __repr__
函数添加到 class,python 将调用它并打印该函数 returns。