我正在尝试使用Praw编写一个Reddit机器人,这是我的功能:
submission = reddit.submission(mention.submission.id)
(我之前已经定义了reddit = praw.Reddit()
等等,所以提交应该给我一个submission object。
首先,我想检查提交是自我发布还是链接。我可以通过查看submission.is_self
来做到这一点。但是,出于好奇,我尝试打印dir(submission)
和submission.__dict__
,并且都没有将is_self
列为对象的属性。
为什么会这样?如何在不深入了解库本身的源代码的情况下,如何可靠地找到对象的所有属性? Praw的文档在这方面有点缺乏。
答案 0 :(得分:1)
内置dir()
方法用于列出所有属性:
>>> class MyClass():
... def __init__(self):
... self.foo = 1
...
>>> c = MyClass()
>>> dir(c)
['__doc__', '__init__', '__module__', 'foo']
>>>
答案 1 :(得分:0)
PRAW使用__getattr__
magic来动态获取和设置对象属性(请参阅praw/models/reddit/base.py
中的RedditBase类)。这就是为什么dir()
没有显示它的原因。
is_self
在源代码中的任何位置都不存在,因为此字符串基于从reddit收到的数据。