我有一个大致像这样的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查询中使用返回的值,该查询将输入作为unix时间戳接受。实际上,我可以将返回的日期赋予另一个函数,以将其转换为时间戳,但是我认为这是学习函数级联/链接的好机会,而我一直在Python中对此感到疑惑。
现在,我基本上想要实现的是这样的:
SomeClass.get_date()
,我希望日期具有从数据库返回的格式,即YYYY-MM-DD HH:MM:SS SomeClass.get_date().as_timestamp()
,则应将其作为时间戳记。 SomeClass.get_date().as_datetime()
和SomeClass.get_date().as_timestamp()
.as_timestamp()
)用于一个以上的主要函数(可能需要将多个datetime列转换为时间戳)。 我研究了一些函数级联的例子。他们大多说,这样做的关键是返回self
,但是我找不到有关如何以所需方式实现的信息。
我基本上需要将返回值输入到第二个函数中(我想),但是不确定是否可行,也不知道该怎么做。有任何想法吗?
答案 0 :(得分:1)
您要寻找的内容看起来像这样:
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时间戳,第四个将是datetime。 get_date()
和as_timestamp()
在实例d
上被调用时对其进行突变。
在此配置中,as_timestamp()
要求get_date()
,这似乎与您的问题相符,但是您可以通过从self
的数据库中分配as_timestamp()
来更改它像这样:
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
是一个时间戳。