我正在使用praw模块,我发现我的对象有时会有一个属性subreddit
,它有时是一个字符串,有时候它是一个具有自己属性的对象。我使用以下方法处理了它:
for c in comments:
if isinstance(c.subreddit, str):
subreddit_name = c.subreddit
else:
subreddit_name = c.subreddit.display_name
我有两个功能,我必须这样做,而且它真的很难看。有没有更好的方法来解决这个问题?
答案 0 :(得分:0)
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)