Python初始化

克莱克里克

我在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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章