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