python中的self.__class__.foo vs cls.foo(' datetime模块)

时间:2015-07-09 20:39:32

标签: python

根据文档字符串,datetime.todaysame as self.__class__.fromtimestamp(time.time())。虽然这一切都有道理,但我很好奇为什么它self.__class__.fromtimestamp而不是cls.fromtimestamp。它实际上是作为常规classmethod实现的,但它们在文档字符串中是非显式的吗?是因为datetime已经老了吗?这是C互操作吗?

ETA:很抱歉不清楚 - cls通常用于代替self课程方法:

@classmethod
def foo(cls, *args, **kwargs):
    ...

1 个答案:

答案 0 :(得分:0)

datetime.today()是一个合适的(Python 2中的本机C,Python 3中的纯Python)class method,因此它甚至不会传递self来引用。

_datetimemodule.c的早期开始就是这样,所以我不知道docstring来自哪里。然而,文档字符串似乎已经存在,即使自模块的初始提交(至少到目前为止git历史记录)。它可能在某个时候是一个对象方法,在更改为类方法后,文档字符串从未更新过。

然而,如上所述,我找不到today()曾经不是类方法的任何证据。

此外,library docsPython 3)未提及self

  

返回当前的本地日期。这相当于date.fromtimestamp(time.time())