如何正确实现方法级联 - 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。
现在,我基本上想要实现的是这样的:
- 如果我只执行
SomeClass.get_date()
,我希望日期的格式与从数据库 return 编辑的格式相同,即 YYYY-MM-DD HH:MM:SS - 如果我执行
SomeClass.get_date().as_timestamp()
,我应该得到它作为时间戳。 - 如果不可能,我会满足于像
SomeClass.get_date().as_datetime()
和SomeClass.get_date().as_timestamp()
- 我可能将第二个函数 (
.as_timestamp()
) 用于多个主要函数(我可能需要将多个日期时间列转换为时间戳)。
我研究了一些函数级联的例子。他们大多说关键是 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
成为时间戳。