在Python 2.7中,如何在构造函数中不定义变量的情况下进行return计算?

In Python 2.7, how can I return calculations without defining variables in the constructor?

我的问题是关于 Python 中的 getter/setter-type 功能。我有一个 class、Week_Of_Meetings,它从我的 Google 日历中获取一团数据并对其进行一些计算。

wom = Week_Of_Meetings(google_meetings_blob)

我希望能够 return 类似的东西:

wom.total_seconds_in_meetings() # returns 36000

但是,我不明白 getters/setters-type @属性 装饰器如何帮助我做到这一点。在 Java 中,我会使用成员变量,但在 Python 中你不会以相同的方式与它们交互。我如何 return 计算而不在构造函数中从它们开始?

Class Week_Of_Meetings:

    def __init__(self, google_meetings_blob) 
        self.google_meetings_blob = google_meetings_blob

    def get_meetings_list(self, google_meetings_blob):
        meetings_list = []
        for meeting_id, meeting in enumerate(self.google_meetings_blob, 1):
            summary = self._get_summary(meeting)
            start = parse(meeting['start'].get('dateTime', meeting['start'].get('date')))
            end = parse(meeting['end'].get('dateTime', meeting['end'].get('date')))
            duration = end - start
            num_attendees = self._get_num_attendees(meeting.get('attendees'))

            m = Meeting(meeting_id, summary, start, end, duration, num_attendees)
            meetings_list.append(m)
        return meetings_list


    def _get_summary(self, meeting):
        summary = meeting.get('summary', 'No summary given')
        return summary


    def _get_num_attendees(self, num_attendees):
        if num_attendees == None:
            num_attendees = 1 # if invited only self to meeting
        else:
            num_attendees = len(num_attendees)
        return num_attendees

当我将 self.total_seconds_in_meetings 添加到

__init__() 

我明白了 "NameError: global name 'total_seconds_in_meetings' is not defined." 这很有道理。它没有被定义。但是当它应该是在 google_meetings_blob 上完成的计算结果时,我无法定义它。所以,我很困惑 'total_seconds_in_meetings' 在 class 中的位置。

感谢您的帮助!

当然Python有成员变量。如果没有它们,类 将如何工作?您可以通过 self 设置和获取任何实例数据,就像您已经在 __init__.

中使用 self.google_meetings_blob 所做的那样