代码之家  ›  专栏  ›  技术社区  ›  Izzo

为什么Python datetime.replace()方法返回一个新对象,而不是修改现有对象?

  •  -3
  • Izzo  · 技术社区  · 6 月前

    在Python DateTime对象上调用.replace()方法会返回DateTime对象的新实例,而不是改变现有对象。这似乎是学习该方法时常见的陷阱。

    1 回复  |  直到 6 月前
        1
  •  4
  •   jonrsharpe    6 月前

    datetime Python中的对象是 不可变的 -这是一种有意的设计选择,提供了线程安全性和可预测的行为。这种不可变的行为与其他内置的Python类型一致,例如 str ings和 tuple s.这是一个强大的功能,有助于防止代码中出现意外的副作用。

    这是一个示例用法:

    from datetime import datetime
    
    # Create a datetime object
    current_date = datetime(2024, 12, 12, 12, 30)
    
    # Correct usage - assign the new value
    new_date = current_date.replace(hour=15)
    
    # Now new_date has hour=15, while current_date remains unchanged
    print(new_date)        # 2024-12-12 15:30:00
    print(current_date)    # 2024-12-12 12:30:00