class 用于自旋向上和向下粒子?

A class for spin up and down particles?

所以我有一堆粒子,可以分为两种,比如说“向上”和“向下”。我是 python 的新手,但我知道这种隔离可以在 class.

的帮助下完成

假设我有一个列表:

T=np.linspace(0,1,1000)

我希望此列表中的每个元素都是两个粒子之一,但我不确定我是否应该创建两个 class 各有一个“种类”或单个 class有两个“实例”并为每个元素分配一个实例。

最后,我想做的是将这个属性的“向上”和“向下”随机分布在列表T上。

信息不足。在处理 1000 个项目时,您很可能不想要 2 个实例 - 每个项目可能应该由 class 的单独实例表示。但这并不意味着拥有 2 classes 是一种可行的方法。 这些粒子是否相对相似并且除了单个 属性 的差异之外它们具有相同的行为?如果是这样,我会选择单个 class、1000 个实例并将 up/down 属性 存储在某个实例属性中。

编辑: 这就是我个人将如何针对当前的相关要求实现这一点:

class Particle:
    def __init__(self, posInit, momInit, spin):
        self.posInit = posInit
        self.momInit = momInit
        self.spin = spin
    def momOfT(self, t):
        return self.momInit*(math.cos(t))+self.posInit*(math.sin(t))
    def posOfT(self, t):
        return self.posInit*(math.cos(t))-self.momInit*(math.sin(t))


T = [Particle(posInit = i, momInit = 1-i, spin = random.choice(["up", "down"])) for i in np.linspace(0, 1, 1001)]

print([T[0].posOfT(i) for i in np.linspace(0, 3.1415*2, 1000)])