将自定义类附加到另一个类中的列表

2024-10-02 02:26:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我只是在下面输入了代码。我希望看到这样的输出:“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)

谁能解释一下,帮我修一下吗


Tags: 代码initproxclassprintp2p1append
1条回答
网友
1楼 · 发布于 2024-10-02 02:26:55

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

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时,您将在实例上更改它,您不会以这种方式创建新实例

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

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

相关问题 更多 >

    热门问题