实例化时使用datetime.now()的Python类
我想要一个Class属性,它在实例化类的新实例时设置实例化时使用datetime.now()的Python类,python,class,datetime,Python,Class,Datetime,我想要一个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(2
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
时创建,而不是虚构?不要在参数中设置它,因为它们是函数本身的成员,因为一切都是第一类对象
class MyThing:
__init__(self, created=None):
self.created = created
if created is None:
self.created = datetime.now()
定义函数时,函数参数的默认值只计算一次。调用函数时不会重新计算它们。通常,您会使用None
作为默认值,并在正文中对其进行测试:
def __init__(self, created=None):
self.created = created or datetime.now()
更好的是,看起来您可能不想将创建的日期传递给构造函数,在这种情况下:
def __init__(self):
self.created = datetime.now()
或者,self.created=datetime.now()如果created不是其他创建的,我就是讨厌双重赋值。:)很高兴知道这两种情况的备选方案。非常感谢。