繁体   English   中英

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

[英]Python class with datetime.now() when instantiated

我想要一个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)

我怎么能这样做,以便在mt实例化时created ,而不是MyThing

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

def __init__(self, created=None):
    self.created = created or datetime.now()

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

def __init__(self):
    self.created = datetime.now()

不要在参数中设置它,因为它们是函数本身的成员,因为所有东西都是第一类对象。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM