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。