我在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)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句