gpt4 book ai didi

python - 将自定义类追加到另一个类中列出

转载 作者:太空宇宙 更新时间:2023-11-03 14:50:52 25 4
gpt4 key购买 nike

我刚刚输入了下面的代码。我期望看到这个输出:“0.5 - 1.5”。但我看到这个:“1.5 -- 1.5”:

class ponto:
x=0
y=0
z=0

class estado:
pontos = []
prox_bloco = 1

#Construir Estado Inicial
p = ponto()
p.x = 0.5
p.y = 0.5
p.z = 0.5
init = estado()
init.pontos.append(p)
p.x = 1.5
init.pontos.append(p)

p1 = init.pontos[0]
p2 = init.pontos[1]
print(p1.x,"--",p2.x)

谁能解释一下这个问题并帮我解决它吗?

最佳答案

首先:您应该使用实例变量而不是类变量:

class ponto:
def __init__(self):
self.x = 0
self.y = 0
self.z = 0

class estado:
def __init__(self):
self.pontos = []
self.prox_bloco = 1

第二:当您更改 p.x 时,您将在实例上更改它,这样您就不会创建新实例!

相反,您应该创建一个新实例(例如使用 copy.copy or copy.deepcopy ),然后在新实例上更改它:

import copy

p = ponto()
p.x = 0.5
p.y = 0.5
p.z = 0.5
init = estado()
init.pontos.append(p)
p = copy.copy(p) # copy "p"
p.x = 1.5 # set the variable on the copy
init.pontos.append(p) # append the copy

p1 = init.pontos[0]
p2 = init.pontos[1]
print(p1.x,"--",p2.x)

这给出了预期的结果:

0.5 -- 1.5

关于python - 将自定义类追加到另一个类中列出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45905239/

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