理解作者对分配 datetime.datetime = self 的选择
Understanding author's choice for assigning 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
但该函数运行正常。为什么作者包括那行?您可以看到完整的文章 here(大约一半)。 self
的分配有什么帮助?
就是所谓的"monkey patching"的例子。注释掉的行在导入的模块中进行了更改,datetime
.
执行完p(2013,2,14)
后(如果不注释掉该行),代码
datetime.datetime()
不执行通常执行的操作,而是在 p
实例上执行 __call__
。
这通常是不好的做法,所以我不会将其称为作者编写好软件的选择,而只是一个例子。作者自己形容这是一个愚蠢的想法:
Since everything in Python is essentially names bound to objects, we can do silly (but interesting) stuff like this
我试图理解以下代码,特别是第 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
但该函数运行正常。为什么作者包括那行?您可以看到完整的文章 here(大约一半)。 self
的分配有什么帮助?
就是所谓的"monkey patching"的例子。注释掉的行在导入的模块中进行了更改,datetime
.
执行完p(2013,2,14)
后(如果不注释掉该行),代码
datetime.datetime()
不执行通常执行的操作,而是在 p
实例上执行 __call__
。
这通常是不好的做法,所以我不会将其称为作者编写好软件的选择,而只是一个例子。作者自己形容这是一个愚蠢的想法:
Since everything in Python is essentially names bound to objects, we can do silly (but interesting) stuff like this