如何在Python中正确实现方法级联链接?
我有一个大致如下的python代码:如何在Python中正确实现方法级联链接?,python,chaining,Python,Chaining,我有一个大致如下的python代码: class SomeClass(): def获取日期(自我): 日期=#以YYYY-MM-DD HH:MM:SS格式从数据库读取数据 返回日期 现在,我将在API查询中使用返回值,该查询将输入作为unix时间戳接受。实际上,我可以将返回的日期提供给另一个函数,以便将其转换为时间戳,但我认为这将是一个学习函数级联/链接的好机会,这在Python中我一直很想知道 现在,我想要实现的基本目标是: 如果我只是执行SomeClass.get_date(),我希望日
class SomeClass():
def获取日期(自我):
日期=#以YYYY-MM-DD HH:MM:SS格式从数据库读取数据
返回日期
现在,我将在API查询中使用返回值,该查询将输入作为unix时间戳接受。实际上,我可以将返回的日期提供给另一个函数,以便将其转换为时间戳,但我认为这将是一个学习函数级联/链接的好机会,这在Python中我一直很想知道
现在,我想要实现的基本目标是:
- 如果我只是执行
,我希望日期的格式与从数据库返回的格式相同,即YYYY-MM-DD HH:MM:SSSomeClass.get_date()
- 如果我执行
,我应该将其作为时间戳李>SomeClass.get\u date().as\u timestamp()
- 如果不可能,我会满足于像
和SomeClass.get_date().as_datetime()
SomeClass.get_date().as_timestamp()
- 我可以将第二个函数(
)用于多个主函数(有多个datetime列,可能需要将其转换为时间戳)李>.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
第一个输出是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
,以强调对象正在发生变化(如果该方法没有返回任何内容,为什么还要调用它?)。你要做的就是对另一个方法的返回值调用一个方法,而不使用临时变量来存储中间值。谢谢,这正是我想要的!我一直认为函数链接提供了一些方法,包括获取前一个函数的输出并对其进行操作。令人欣慰的是,它实际上要简单得多:)…也称为