diff options
author | cinap_lenrek <cinap_lenrek@localhost> | 2011-05-03 11:25:13 +0000 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@localhost> | 2011-05-03 11:25:13 +0000 |
commit | 458120dd40db6b4df55a4e96b650e16798ef06a0 (patch) | |
tree | 8f82685be24fef97e715c6f5ca4c68d34d5074ee /sys/src/cmd/python/Demo/classes/Vec.py | |
parent | 3a742c699f6806c1145aea5149bf15de15a0afd7 (diff) |
add hg and python
Diffstat (limited to 'sys/src/cmd/python/Demo/classes/Vec.py')
-rwxr-xr-x | sys/src/cmd/python/Demo/classes/Vec.py | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/sys/src/cmd/python/Demo/classes/Vec.py b/sys/src/cmd/python/Demo/classes/Vec.py new file mode 100755 index 000000000..56cb83939 --- /dev/null +++ b/sys/src/cmd/python/Demo/classes/Vec.py @@ -0,0 +1,54 @@ +# A simple vector class + + +def vec(*v): + return Vec(*v) + + +class Vec: + + def __init__(self, *v): + self.v = list(v) + + def fromlist(self, v): + if not isinstance(v, list): + raise TypeError + self.v = v[:] + return self + + def __repr__(self): + return 'vec(' + repr(self.v)[1:-1] + ')' + + def __len__(self): + return len(self.v) + + def __getitem__(self, i): + return self.v[i] + + def __add__(self, other): + # Element-wise addition + v = map(lambda x, y: x+y, self, other) + return Vec().fromlist(v) + + def __sub__(self, other): + # Element-wise subtraction + v = map(lambda x, y: x-y, self, other) + return Vec().fromlist(v) + + def __mul__(self, scalar): + # Multiply by scalar + v = map(lambda x: x*scalar, self.v) + return Vec().fromlist(v) + + + +def test(): + a = vec(1, 2, 3) + b = vec(3, 2, 1) + print a + print b + print a+b + print a-b + print a*3.0 + +test() |