此函数生成一系列日期(此函数与某个类相关):
def _makeRangeDates(self, desde, ultima_carga):
dates = []
for fechaRequest in rrule(DAILY, dtstart=desde, until=ultima_carga):
dates.append(fechaRequest)
return self.dates
返回此函数内日期列表的最佳方法是什么?
是必须返回self.dates吗?
的问候。 纳尔逊。
答案 0 :(得分:2)
您无法在此处返回self.dates
。您将日期附加在dates
变量中,并且应该在方法内返回。在您的情况下,self.dates
可能甚至不存在。
编辑:我认为这是您要实施的目标
class abc():
def __init__(self):
self.dates = []
def _makeRangeDates(self,desde,ultima_carga):
for fechaRequest in rrule(DAILY, dtstart=desde, until=ultima_carga):
self.dates.append(fechaRequest)
return self.dates
答案 1 :(得分:1)
我假设您已经在某种类foo
中拥有此功能,如此:
class foo(object):
def __init__(self):
self.dates = []
def _makeRangeDates(self,desde,ultima_carga):
dates = []
for fechaRequest in rrule(DAILY, dtstart=desde, until=ultima_carga):
dates.append(fechaRequest)
return self.dates
在这种情况下,返回dates
和self.dates
是完全不同的两件事。由于dates
是在_makeRangeDates
函数内创建的,因此在调用函数后很快就会收集垃圾。如果您希望仅返回dates
而不是将其保存在某个州,那么那就完美了。
如果您希望保存dates
的状态,请执行以下操作:
class foo(object):
def __init__(self):
self.dates = []
def _makeRangeDates(self,desde,ultima_carga):
for fechaRequest in rrule(DAILY, dtstart=desde, until=ultima_carga):
self.dates.append(fechaRequest)
return self.dates
答案 2 :(得分:1)
您混淆了本地变量和数据成员。并且 _makeRangeDates
甚至不是一种方法,只是一个函数,因为它不会读取或写入对象(您永远不会使用self
参数) 。
dates
只是您在函数中创建的一些局部变量:
dates = []
for fechaRequest in rrule(DAILY, dtstart=desde, until=ultima_carga):
dates.append(fechaRequest)
dates
不是数据成员,即它不是self.dates
。
如果您只想要一个返回该结果的函数,那么return dates
。
该函数可以站在类层次结构之外。
如果你想在类中放置一个这样的辅助函数,但实际上根本没有访问该对象,那么这种函数称为 staticmethod / classmethod (建议你读到了两者之间的区别。)
答案 3 :(得分:0)
dates
变量和self.dates
变量是两个不同的变量(除非你做了一些赋值,例如self.date = date
,在这个赋值之后它们都指的是同一个对象(但仍然是指向相同参考的不同名称/变量。)
是的,你可以返回任何一个python不应该抱怨(除非你试图返回一个尚未定义/初始化的变量,就像你在你的例子中所做的那样)
在您的示例中,您正在创建dates
变量并为其添加值,但最后您将返回self.dates
(这可能会导致问题,因为self.dates
可能尚未定义该函数被调用)。
我相信你想从你的函数返回dates
,因为那是你在函数中定义的变量,你追加日期。