在方法内部返回值的正确方法是什么?在python中

2024-09-29 19:30:44 发布

您现在位置:Python中文网/ 问答频道 /正文

此函数生成日期范围(此函数与类相关):

def _makeRangeDates(self, desde, ultima_carga):
    dates = []
    for fechaRequest in rrule(DAILY, dtstart=desde, until=ultima_carga):
        dates.append(fechaRequest)
    return self.dates

返回函数中日期列表的最佳方法是什么?你知道吗

必须返回自我介绍日期? 你知道吗

敬礼。 纳尔逊。你知道吗


Tags: 函数inselffordefdailyuntildates
3条回答

不能在此处返回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

我假设您在某种类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

在本例中,返回datesself.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

你混淆了局部变量和数据成员。而且_makeRangeDates甚至不是一个方法,只是一个函数,因为它不读取或写入对象(您从不使用self参数)。你知道吗

dates只是在函数中创建的一些局部变量:

dates = []
    for fechaRequest in rrule(DAILY, dtstart=desde, until=ultima_carga):
        dates.append(fechaRequest)

dates不是数据成员,即它不是self.dates。你知道吗

如果您只需要一个返回该结果的函数,那么return dates。 该函数可以位于类层次结构之外。你知道吗

如果您想在类中放置这样一个helper函数,但它实际上根本不访问对象,那么这种函数称为staticmethod/classmethod(建议您仔细阅读两者之间的区别)。你知道吗

相关问题 更多 >

    热门问题