这是粒子类。当我初始化不同的粒子“ byPosition”方法时,这些粒子共享“ self.position”变量,那么为什么共享“ self.position”变量的人有理想的想法?
t1.id < t2.id
“ byPosition”中的“ position”是从“ QPointF(0,0)”传递的 我创建了两个“ byPosition”粒子对象,并赋予它们随机速度,并计算下一帧中每个对象的位置。
我希望看到两个不同点的路径。 但是,这两个对象共享“ self.position”数据。 尽管它们具有不同的速度。
按如下所示编辑“ byPosition”方法后,一切正常。 我只是有点听不懂。
import random
from PyQt5.QtCore import QPointF
from PyQt5.QtGui import QPen, QColor
class Particle:
seed = False
def __init__(self, velocity, position, h, seed):
self.hue = h
self.acceleration = QPointF(0, 0)
self.velocity = velocity
self.position = position
self.seed = seed
@classmethod
def byXY(cls, x, y, h):
lowVel = -11 * (y / 480)
highVel = -5 * (y / 480)
velocity = QPointF(0, random.uniform(lowVel, highVel))
position = QPointF(x, y)
return cls(velocity, position, h, True)
@classmethod
def byPosition(cls, position, h):
mul = random.uniform(6, 9)
randomVel = [random.uniform(-1, 1) * mul for i in range(2)]
velocity = QPointF(randomVel[0], randomVel[1])
position = position
return cls(velocity, position, h, False)
我发现了类似的问题,@classmethod for constructor overloading