我想要定义一个Python类,它通过praw包分析subreddit数据。Python类:数据不知何故丢失
我对C++中的OOP有相当丰富的经验,但在Python中没有太多的OOP经验。这里是我的代码至今:
import praw
class SubRedditAnalyzer:
def __init__(self, reddit_session, name='dataisbeautiful'):
self.name = name # subreddit name
self.reddit_session = reddit_session # assign the reddit session
self.subreddit = self.reddit_session.get_subreddit(self.name) # create the subreddit object
self.timeframe = 'day'
self.max_post_count = 10
self.submissions = self.subreddit.get_top_from_hour(limit=10)
def __del__(self):
class_name = self.__class__.__name__
print class_name, "destroyed"
def get_top_submissions(self, max_post_count):
timeframe = self.timeframe
if (timeframe == 'hour'):
self.submissions = self.subreddit.get_top_from_hour(limit= max_post_count)
elif (timeframe == 'day'):
self.submissions = self.subreddit.get_top_from_day(limit= max_post_count)
elif (timeframe == 'week'):
self.submissions = self.subreddit.get_top_from_week(limit= max_post_count)
elif (timeframe == 'month'):
self.submissions = self.subreddit.get_top_from_month(limit= max_post_count)
elif (timeframe == 'year'):
self.submissions = self.subreddit.get_top_from_year(limit= max_post_count)
elif (timeframe == 'all'):
self.submissions = self.subreddit.get_top_from_all(limit= max_post_count)
def combine_titles(self):
titles = ""
for submission in self.submissions:
titles += submission.title
self.titles = titles
def display_titles(self):
counter = 1
ya = self.submissions
for sub in self.submissions:
sc = sub.score
ti = sub.title
print('T%d- [%d] %s \n' %(counter,sc,ti))
counter += 1
def main():
r = praw.Reddit('Request to fetch data by user')
sr = SubRedditAnalyzer(r, 'dataisbeautiful')
sr.get_top_submissions(15) # top 15 from reddit
sr.combine_titles() # combine the top titles
sr.display_titles() # display all the titles
main()
对于一些未知的(对我)的原因,似乎是在课堂上“SR”中的数据丢失调用后:
sr.combine_titles()
当我尝试调用此方法,在课堂上的数据是空的:
sr.display_titles()
其实,我也看到类被破坏的消息:
SubRedditAnalyzer已销毁
什么是我做错了? 提前,感谢您的关注。
我不知道'praw',但你的代码看起来不错,以我和我看不到任何明显为什么'__del__'方法会被过早地调用。 –
当然,这个类在main()方法的末尾被销毁了,这是你应该期望的,不是? –
@ PM2Ring:感谢您的评论。由于我还没有使用Python中的类的经验,我不确定这是否是我做错的事。仅供参考,没有任何课程,此代码工作正常。你有什么建议,我可以如何跟踪这个问题?谢谢。 – MomoPP