gpt4 book ai didi

Python初始化器

转载 作者:行者123 更新时间:2023-11-28 16:27:06 24 4
gpt4 key购买 nike

我在 Python 中有一个线类的初始化程序,它需要两个点作为参数。问题是我的初始化程序只复制引用。所以 self.point0 和 point 0 指向同一个对象。我不太确定如何更改它,以便我不只是复制引用。线类:

def __init__(self, point0, point1): 
self.point0 = point0
self.point1 = point1

点类:

def __init__(self, x, y):
self.x = x
self.y = y

最佳答案

使用 copy模块:

import copy

def __init__(self, point0, point1):

self.point0 = copy.copy(point0)
self.point1 = copy.copy(point1)

如果您的点对象是可变的,例如列表或字典,则这是必需的。如果您使用的是不可变类型,例如 tuple,则不需要制作副本。

如果您的点表示为列表,您还可以使用以下语法制作列表的副本:

self.point0 = point0[:]
self.point1 = point1[:]

如果您提供积分等级的定义,我可以更确定地建议您。


在 OP 发布 Point 类定义后

更新:

如果 copy.copy() 不受欢迎(为什么?),您可以手动将属性复制到新的 Point 实例:

class Line(object):
def __init__(self, point0, point1):
self.point0 = Point(point0.x, point0.y)
self.point1 = Point(point1.x, point1.y)

关于Python初始化器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35692300/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com