Garrett Hartshaw <gharts...@gmail.com> wrote: > The program I am writing gives the following error message when run. > > Traceback (most recent call last): > File "./space.py", line 177, in <module> > main() > File "./space.py", line 173, in main > player = Ship("space/models/fighter.3ds", > "space/models/realistic.bmp", Quaternion(), Vector(0, 0, -30), 1, 0.1) > File "./space.py", line 131, in __init__ > Object.__init__(self, obj, tex, rot, pos) > File "./space.py", line 124, in __init__ > self.model = Model(obj) > File "./space.py", line 80, in __init__ > self.CalcNormals() > File "./space.py", line 90, in CalcNormals > vectB = (vectA - vectB).Normalize() > AttributeError: Vector instance has no attribute 'Normalize' > > The definition for Vector is: > > class Vector: > def __init__(self, x=0, y=0, z=0): > self.x = x > self.y = y > self.z = z > > def Normalize(self): > return self / self.Length() > > def __sub__(self, right): > return Vector(self.x - right.x, self.y - right.y, self.z - right.z) > > so I cannot figure out what the error is.
You may print out the given vector's attr list using dir to check, or just check it actually holds a Normalise method, exactly at the point you want its norm. Something like: v = (vectA - vectB) print (hasattr(v, "Normalise")); print (v.__class__) vectB = v.Normalise() The second print() is for this reason: I bet you have several instances (;-) of the Vector class on your system, and the one actually used is not the one you guess... > (o_ > //\ > V_/_ > _______________________________________________ > Tutor maillist - Tutor@python.org > To unsubscribe or change subscription options: > http://mail.python.org/mailman/listinfo/tutor ________________________________ la vita e estrany http://spir.wikidot.com/ _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor