实例化时使用datetime.now()的Python类

MFB*_*MFB 4 python datetime class

我想要一个Class属性,它设置datetime.now()何时实例化一个新的类实例.使用此代码,MyThing.created似乎始终MyThing是导入时,而不是mt实例化时.

from datetime import datetime

class MyThing:
    __init__(self, created=datetime.now()):
        self.created = created

MyThing.created
datetime.datetime(2012, 7, 5, 10, 54, 24, 865791)

mt = MyThing()
mt.created
datetime.datetime(2012, 7, 5, 10, 54, 24, 865791)
Run Code Online (Sandbox Code Playgroud)

我如何能做到这一点,这样createdmt被实例化,而不是MyThing

Ned*_*der 9

定义函数时,函数参数的默认值计算一次.调用函数时不会重新评估它们.通常,您将使用None默认值,并在正文中测试它:

def __init__(self, created=None):
    self.created = created or datetime.now()
Run Code Online (Sandbox Code Playgroud)

更好的是,看起来你可能不希望将创建的日期传递给构造函数,在这种情况下:

def __init__(self):
    self.created = datetime.now()
Run Code Online (Sandbox Code Playgroud)