2017-12-15 21 views
1

私はPrawを使用してRedditのボットを書くしようとしている、これは私の関数である:Pythonでオブジェクトのすべての属性を一覧表示するにはどうすればよいですか?

submission = reddit.submission(mention.submission.id)

(私は以前reddit = praw.Reddit()やその他もろもろを定義しているので、提出が私にsubmission objectを与える必要があります

。最初に、投稿が自己投稿かリンクかをチェックしたいのですが、それはsubmission.is_selfをチェックすることで可能ですが、好奇心のためにdir(submission)submission.__dict__を印刷してみましたが、どちらもオブジェクトの属性としてis_selfです。

なぜそうですか?そして、ライブラリ自体のソースコードを掘り下げることなく、オブジェクトのすべての属性を確実に見つける方法を教えてください。 Prawのドキュメントはこの点で少し欠けています。

答えて

0

dir()方法で構築されたが、すべての属性を表示するために使用されます。

>>> class MyClass(): 
...  def __init__(self): 
...   self.foo = 1 
... 
>>> c = MyClass() 
>>> dir(c) 
['__doc__', '__init__', '__module__', 'foo'] 
>>> 
0

PRAWは(praw/models/reddit/base.pyでRedditBaseクラスを参照してください)動的オブジェクト属性を取得および設定する__getattr__魔法を使用しています。そのため、dir()には表示されません。

is_selfは、この文字列がredditから受信したデータに基づいているため、ソースコードのどこにも存在しません。

関連する問題