在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
所做的那样
我的问题是关于 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
所做的那样