Python Vector Class
        Posted  
        
            by sfjedi
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by sfjedi
        
        
        
        Published on 2010-03-08T12:21:11Z
        Indexed on 
            2010/03/08
            12:36 UTC
        
        
        Read the original article
        Hit count: 449
        
I'm coming from a C# background where this stuff is super easy—trying to translate into Python for Maya.
There's gotta' be a better way to do this. Basically, I'm looking to create a Vector class that will simply have x, y and z coordinates, but it would be ideal if this class returned a tuple with all 3 coordinates and if you could edit the values of this tuple through x, y and z properties, somehow.
This is what I have so far, but there must be a better way to do this than using an exec statement, right? I hate using exec statements.
class Vector(object):
    '''Creates a Maya vector/triple, having x, y and z coordinates as float values'''
    def __init__(self, x=0, y=0, z=0):
        self.x, self.y, self.z = x, y, z
    def attrsetter(attr):
        def set_float(self, value):
            setattr(self, attr, float(value))
        return set_float
    for xyz in 'xyz':
        exec("%s = property(fget=attrgetter('_%s'), fset=attrsetter('_%s'))" % (xyz, xyz, xyz))
© Stack Overflow or respective owner