Python 了解作者分配datetime的选择。datetime=self

Python 了解作者分配datetime的选择。datetime=self,python,datetime,self,Python,Datetime,Self,我试图理解下面的代码,特别是第5行,注释掉的那一行,我自己也注释掉了 >>> class PartyTime(): ... def __call__(self,*args): ... imp.reload(datetime) ... value = datetime.datetime(*args) ... #datetime.datetime = self ...

我试图理解下面的代码,特别是第5行,注释掉的那一行,我自己也注释掉了

  >>> class PartyTime():
    ...     def __call__(self,*args):
    ...         imp.reload(datetime)
    ...         value = datetime.datetime(*args)
    ...         #datetime.datetime = self 
    ...         return value

    ... etc
    >>> p = PartyTime()
    >>> print p(2013,2,14)
    2013-02-14 00:00:00

如您所见,第5行注释掉了datetime.datetime=self,但函数的行为正常。作者为什么要写这句话?你可以看到整篇文章,大概已经写了一半了。这项自救任务需要做什么

这是所谓的猴子修补术的一个例子。注释掉的行在导入的模块datetime中进行了更改

执行p2013,2,14后,如果不注释掉该行,则代码

datetime.datetime()
不执行它通常执行的操作,但在p实例上执行_call

这通常是一种不好的做法,所以我不会将其称为编写好软件的作者选择,而只是一个例子。作者本人将其描述为一个愚蠢的想法:

因为Python中的所有内容本质上都是绑定到对象的名称,所以我们可以做这样愚蠢但有趣的事情


谢谢我知道这是个糟糕的代码,只是想知道它会有什么不同。