Python:为数字添加方法
受到Ruby的诱惑,我想在python中处理日期时添加一些语法糖。Python:为数字添加方法,python,date,syntactic-sugar,Python,Date,Syntactic Sugar,受到Ruby的诱惑,我想在python中处理日期时添加一些语法糖。 如何实现此方法:(3).days.ago()或(4).days.from_now()?要创建与所需语法相近的语法,请使用子类int添加新方法(内置int类型不可修改,因此子类是扩展整数行为的唯一选项)。使用以下公式计算日期偏移: 要创建与所需语法相近的语法,可以使用子类int来添加新方法(内置int类型是不可修改的,因此子类是扩展整数行为的唯一选项)。使用以下公式计算日期偏移: 您尝试过什么吗?我在中发现了类似的功能,但调查代码
如何实现此方法:(3).days.ago()或(4).days.from_now()?要创建与所需语法相近的语法,请使用子类int添加新方法(内置int类型不可修改,因此子类是扩展整数行为的唯一选项)。使用以下公式计算日期偏移:
要创建与所需语法相近的语法,可以使用子类int来添加新方法(内置int类型是不可修改的,因此子类是扩展整数行为的唯一选项)。使用以下公式计算日期偏移:
您尝试过什么吗?我在中发现了类似的功能,但调查代码需要一些时间。我试图找到一种更快的方法来实现这一点。你想用python编写ruby吗?:)@Nozim:Python不是Ruby。您不能使用monkeypatch内置类型。聪明也许很酷,但可读性很重要。我知道Python不是Ruby。如果你帮不上忙,请不要滔滔不绝地谈论这个话题。非常感谢。您尝试过什么吗?我在中发现了类似的功能,但调查代码需要一些时间。我试图找到一种更快的方法来实现这一点。你想用python编写ruby吗?:)@Nozim:Python不是Ruby。您不能使用monkeypatch内置类型。聪明也许很酷,但可读性很重要。我知道Python不是Ruby。如果你帮不上忙,请不要滔滔不绝地谈论这个话题。非常感谢。我想用Mine包装这个函数。问题在于用python实现“(3).days.ago()”,而不是获取日期。这只是这个技巧的一个应用程序。@Nozim您的需求与语言提供的内容不相交。我想用Mine来包装这些函数。问题在于用python实现“(3).days.ago()”,而不是获取日期。这只是这个技巧的一个应用。@Nozim您的需求与语言提供的内容不相交。
>>> from datetime import date, timedelta
>>> class Int(int):
def days_ago(self):
return date.today() - timedelta(days=self)
def days_from_now(self):
return date.today() + timedelta(days=self)
>>> Int(3).days_ago()
datetime.date(2013, 4, 5)
>>> Int(4).days_from_now()
datetime.date(2013, 4, 12)