1

私は praw モジュールを使用していますが、私のオブジェクトにsubredditは、文字列である場合もあれば、独自のプロパティを持つオブジェクトである場合もあるプロパティがあることがわかりました。私は以下を使用してそれに対処しました:

for c in comments:
    if isinstance(c.subreddit, str):
        subreddit_name = c.subreddit
    else:
        subreddit_name =  c.subreddit.display_name

私はこれをしなければならない2つの機能を持っていますが、それは本当に醜いです。これに対処するより良い方法はありますか?

4

1 に答える 1

0

LBYLではなくEAFPを使用します。

for c in comments:
    try:
         subreddit_name =  c.subreddit.display_name
    except AttributeError:
        subreddit_name = c.subreddit

getattr次のようなデフォルトを取る を試すこともできますdict.get

subreddit_name = getattr(c.subreddit, 'display_name', c.subreddit)

これは事実上、次のより適切なバージョンです。

subreddit_name = (c.subreddit.display_name 
                  if hasattr(c.subreddit, 'display_name') 
                  else c.subreddit)
于 2015-10-08T14:46:13.777 に答える