【发布时间】:2022-01-22 10:04:57
【问题描述】:
我想知道为什么会这样
import datetime as dt
test1 = dt.datetime
print(test)
''' prints: <class 'datetime.datetime'>'''
据我了解python,要创建一个类的实例,你需要用这样的括号来调用它:
test2 = dt.datetime(2021, 12, 31)
(调用构造方法强制输入年月日)。
起初我认为像第一个示例(不带括号)那样调用 datetime 必须是属性或其他东西。但我在“日期时间”类中找不到单个常设属性“日期时间”。
有趣的是——不管你怎么称呼它,因为这两行都会导致相同的结果:
test = dt.datetime
test2 = dt.datetime(2021, 12, 31)
print(test.now())
print(test2.now())
但是为什么呢?我错过了什么? 非常感谢!
【问题讨论】:
-
dt.datetime是类datetime,而不是它的实例。 -
dt.datetime是datetime.datetime,因为你做了import datetime as dt。这里的dt指的是模块datetime。 -
在第一种情况下,您只是打印类标识符本身,而不是类中的方法
-
您可以在
dt.datetime的实例上运行dt.datetime.now()或调用now(),因为实例可以访问类方法 -
如果您熟悉打开文件,您会感到惊讶吗
print(open)?您没有为该函数提供任何要打开的文件,但它仍然会打印一些东西!根本没有调用,你只是打印方法的__repr__
标签: python datetime call brackets