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

如何在Python中正确实现方法级联链接?,python,chaining,Python,Chaining,我有一个大致如下的python代码: class SomeClass(): def获取日期(自我): 日期=#以YYYY-MM-DD HH:MM:SS格式从数据库读取数据 返回日期 现在,我将在API查询中使用返回值,该查询将输入作为unix时间戳接受。实际上,我可以将返回的日期提供给另一个函数,以便将其转换为时间戳,但我认为这将是一个学习函数级联/链接的好机会,这在Python中我一直很想知道 现在,我想要实现的基本目标是: 如果我只是执行SomeClass.get_date(),我希望日

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

class SomeClass():
def获取日期(自我):
日期=#以YYYY-MM-DD HH:MM:SS格式从数据库读取数据
返回日期
现在,我将在API查询中使用返回值,该查询将输入作为unix时间戳接受。实际上,我可以将返回的日期提供给另一个函数,以便将其转换为时间戳,但我认为这将是一个学习函数级联/链接的好机会,这在Python中我一直很想知道

现在,我想要实现的基本目标是:

  • 如果我只是执行
    SomeClass.get_date()
    ,我希望日期的格式与从数据库返回的格式相同,即YYYY-MM-DD HH:MM:SS
  • 如果我执行
    SomeClass.get\u date().as\u timestamp()
    ,我应该将其作为时间戳
  • 如果不可能,我会满足于像
    SomeClass.get_date().as_datetime()
    SomeClass.get_date().as_timestamp()
  • 我可以将第二个函数(
    .as_timestamp()
    )用于多个主函数(有多个datetime列,可能需要将其转换为时间戳)
我已经研究了一些函数级联的例子。他们大多说,关键是返回
self
,但我找不到任何关于如何以我需要的方式实现它的信息


我基本上需要将返回值输入第二个函数(我猜),但不确定是否可能,也不知道如何实现。有什么想法吗

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

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)
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
第一个输出是MySQL日期时间,第二个是Unix时间戳,第三个也是Unix时间戳,第四个是日期时间
get_date()
as_timestamp()
在调用实例时对其进行变异

在此配置中,
as_timestamp()
需要
get_date()
,这似乎与您的问题一致,但您可以通过在
as_timestamp()
中从数据库中指定
self
来更改,如下所示:

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)
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

这将使调用
作为\u timestamp()
独立于
get\u date()
成为可能。然后,您还可以添加
d。as_timestamp()
来改变
d
的任何迭代,以便
d
是一个时间戳。

get_date
必须返回一些对象,其中包含您想要使用的其余方法。您可以让Date对象的
\uuuu str\uuu
使用默认表示,然后让其他每个方法返回其他特定格式。您所指的级联类型通常涉及改变对象的方法,并且涉及彼此并不真正相关的方法调用。在Python中,这样的方法通常返回
None
,以强调对象正在发生变化(如果该方法没有返回任何内容,为什么还要调用它?)。你要做的就是对另一个方法的返回值调用一个方法,而不使用临时变量来存储中间值。谢谢,这正是我想要的!我一直认为函数链接提供了一些方法,包括获取前一个函数的输出并对其进行操作。令人欣慰的是,它实际上要简单得多:)…也称为