为Python而枯萎?

为Python而枯萎?,python,lombok,boilerplate,Python,Lombok,Boilerplate,在Java的Lombok中,有一个名为wither的功能,它克隆一个现有实例并只更改它的一个属性() Python中是否有类似的东西 (类似于Lombok的Python项目如下所示,但它们没有此功能: ) 您可以使用copy.copy import copy my_copy = copy.copy(my_obj) my_copy.my_attribute = my_value 请注意,这将执行浅复制,即对其他对象(如列表)的所有引用将指向同一对象。如果需要“深度”拷贝,请使用copy.d

在Java的Lombok中,有一个名为
wither
的功能,它克隆一个现有实例并只更改它的一个属性()

Python中是否有类似的东西

(类似于Lombok的Python项目如下所示,但它们没有此功能:

  • )

  • 您可以使用
    copy.copy

    import copy
    
    my_copy = copy.copy(my_obj)
    my_copy.my_attribute = my_value
    
    请注意,这将执行浅复制,即对其他对象(如列表)的所有引用将指向同一对象。如果需要“深度”拷贝,请使用
    copy.deepcopy(my_obj)

    这适用于大多数对象,但不是所有对象。

    Python库通过

    以下是从文档中复制的示例:

    >>> @attr.s
    ... class C(object):
    ...     x = attr.ib()
    ...     y = attr.ib()
    >>> i1 = C(1, 2)
    >>> i1
    C(x=1, y=2)
    >>> i2 = attr.evolve(i1, y=3)
    >>> i2
    C(x=1, y=3)
    >>> i1 == i2  # False
    False