В Python 2.7, как я могу вернуть вычисления без определения переменных в конструкторе?

Мой вопрос о функциональности типа getter/setter в Python. У меня есть класс Week_Of_Meetings, который берет блок данных из моего Календаря Google и выполняет некоторые вычисления на нем.

wom = Week_Of_Meetings(google_meetings_blob)

Я хочу иметь возможность вернуть что-то вроде:

wom.total_seconds_in_meetings() # returns 36000

Но я не понимаю, как декоратор типа @property типа getters / setters может помочь мне в этом. В Java я бы использовал переменные-члены, но вы не взаимодействуете с ними одинаково в Python. Как я могу вернуть расчеты, не начиная с них в конструкторе?

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: глобальное имя 'total_seconds_in_meetings' не определено". В этом есть смысл. Это не было определено. Но я не могу определить его, когда он должен быть результатом вычислений, выполненных на google_meetings_blob. Итак, я запутался, куда идет "total_seconds_in_meetings" в классе.

Спасибо вам за помощь!

1 ответ

Решение

Конечно, в Python есть переменные-члены. Как бы классы работали без них? Вы можете установить и получить любые данные экземпляра через self, как вы уже делаете с self.google_meetings_blob в __init__,

Другие вопросы по тегам