Python中的strtime方法是方法内部的方法吗?

Python中的strtime方法是方法内部的方法吗?,python,Python,为什么我们需要编写datetime.datetime.strptime而不是datetime.strptime来使用strptime方法?它是方法中的方法吗?strtime是一个工厂函数,返回一个datetime.datetime对象。作者可以选择将其放在模块级别,但决定添加名称空间封装,因为调用与模块中的其他类无关。这是一种编码原理,不是必需的。但是有类型提示很好。例如,我可能已经在模块级实现了它,因此很容易在帮助文本中找到它,但从\u strtime中调用了它datetime\u >&

为什么我们需要编写datetime.datetime.strptime而不是datetime.strptime来使用strptime方法?它是方法中的方法吗?

strtime
是一个工厂函数,返回一个
datetime.datetime
对象。作者可以选择将其放在模块级别,但决定添加名称空间封装,因为调用与模块中的其他类无关。这是一种编码原理,不是必需的。但是有类型提示很好。例如,我可能已经在模块级实现了它,因此很容易在
帮助
文本中找到它,但从\u strtime中调用了它
datetime\u

>>> import datetime
>>> class MyDateTime(datetime.datetime):
...     pass
... 
>>> dt = MyDateTime.strptime("30 Nov 00", "%d %b %y")
>>> type(dt)
<class '__main__.MyDateTime'>
为了扩展这个名称,作者编写了模块
datetime.py
,并选择实现一个
类datetime
,这样就得到了奇怪的
datetime.datetime
东西。普通的python编码标准会说类应该是
classdatetime
,这样看起来就不会有这种奇怪的事情发生。但由于历史原因和足够多的人认为它在视觉上是令人愉悦的,所以它仍然是
datetime

编辑

因为
strtime
是一种类方法,所以它有一个很好的特性,而不仅仅是在模块级别定义函数。假设我子类
datetime
strtime
将构造我的类,而不是
datetime

>>> import datetime
>>> class MyDateTime(datetime.datetime):
...     pass
... 
>>> dt = MyDateTime.strptime("30 Nov 00", "%d %b %y")
>>> type(dt)
<class '__main__.MyDateTime'>
导入日期时间 >>>类MyDateTime(datetime.datetime): ... 通过 ... >>>dt=MyDateTime.strTime(“00年11月30日,“%d%b%y”) >>>类型(dt)

如果我的类的
\uuuu init\uuuu
类似于
datetime
,这很好,但是如果我之所以子类是为了覆盖
\uuuu init\uuuuu

它是datetime的一种方法,那将是一场灾难。datetime所有的类都是以这种格式编写的吗class.class?或者是这样的,一个类的一个子类?它是关于设计将它放在哪个方法中的人,@tdelaney很好地解释了它。它是一个
方法
,也称为
函数
,在一个类中,我看到的文档中列出了它。我忘了datetime是一个模块。一个模块基本上是一组类?datetime是模块datetime中的一个类?这就是为什么我们要写datetime.datetime?datetime.datetime.StrTime是模块datetime的类datetime的方法?我理解对了吗?@Aka895862-是的,就是这样。您可以
print(datetime.\uuu文件)
获取
datetime.py的路径,然后自己查看。搜索
strtime
,你会发现它是
classdatetime
上的
@classmethod
。这让我感到困惑。非常感谢你的回答!