如何正确实现方法级联 - Python 中的链接?

How to properly implement method cascading - chaining in Python?

我有一个 python 代码大致如下:

class SomeClass():

    def get_date(self):
        date = # read the data from the database in YYYY-MM-DD HH:MM:SS format
        return date

现在,我将在 API 查询中使用 returned 值,它接受输入作为 unix 时间戳。实际上我可以将 returned 日期提供给另一个函数以将其转换为时间戳,但我认为这将是了解函数级联/链接的好机会,我一直想知道 Python。

现在,我基本上想要实现的是这样的:

我研究了一些函数级联的例子。他们大多说关键是 returning self,但我找不到任何关于如何以我需要的方式实施它的信息。

我基本上需要将 return 值输入第二个函数(我猜),但不确定是否可行,也不知道该怎么做。有任何想法吗?

您要查找的内容更像这样:

import time
import calendar

class DateClass():

  def get_date(self):
    self = # read the data from the database in YYYY-MM-DD HH:MM:SS format
    return self

  def as_timestamp(self):
    mysql_time = time.strptime(self, '%Y-%m-%d %H:%M:%S')
    self = calendar.timegm(mysql_time)
    return self

d = DateClass()
print(d.get_date())
print(d.get_date().as_timestamp())
print(d)
d.get_date()
print(d)

第一个输出是 MySQL 日期时间,第二个是 Unix 时间戳,第三个也是 unix 时间戳,第四个是日期时间。 get_date()as_timestamp() 在调用实例 d 时改变实例。

在此配置中,as_timestamp() 需要 get_date(),这似乎符合您的问题,但您可以通过从 [=13] 中的数据库分配 self 来更改它=] 像这样:

def as_timestamp(self):
  self = # read the data from the database in YYYY-MM-DD HH:MM:SS format
  mysql_time = time.strptime(self, '%Y-%m-%d %H:%M:%S')
  self = calendar.timegm(mysql_time)
  return self

这将使调用 as_timestamp() 独立于 get_date() 成为可能。然后,您还可以添加 d.as_timestamp() 来改变 d 的任何迭代,以便 d 成为时间戳。