问题:
我正在尝试使用python模拟Boids粒子系统,这是我为Blender 3D创建的插件,这相当复杂,将从头开始。
这是我第三次尝试为其设计可维护的代码结构。
我试图提出pythonic设计,该设计允许对彼此交互的不同类别的粒子进行快速原型制作,这样我就可以创建一个新的粒子实现并将其与系统中的其他粒子进行交互。
参见示例:
class ParticleSystem:
def __init__(self):
self.particles = []
def add_particle(self, particle):
self.particles.append(particle)
def step_frame(self, speed):
for p in self.particles:
p.step(speed)
class Particle:
def __init__(self, system)
self.location = Vector(0,0,0)
self.system = system
def step(speed):
for particle in self.system.particles:
#random interatcion formula
self.location = particle.location + self.location
system = ParticleSystem()
p = Particle(system)
system.add_particle(p)
如您所见,这是我最好的方法,但是当我有多个类别的粒子并且必须将系统传递给粒子然后再将粒子传递给系统时,它会变得很混乱。
问题
有没有一种方法可以让我检测何时创建类实现,例如:Class Baseball(Particle):并使系统类知道所有现有类型,以便我可以调用system.create_baseball(location)?
小唯快跑啊
相关分类