summaryrefslogtreecommitdiff
path: root/sys/src/cmd/python/Demo/classes/Vec.py
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@localhost>2011-05-03 11:25:13 +0000
committercinap_lenrek <cinap_lenrek@localhost>2011-05-03 11:25:13 +0000
commit458120dd40db6b4df55a4e96b650e16798ef06a0 (patch)
tree8f82685be24fef97e715c6f5ca4c68d34d5074ee /sys/src/cmd/python/Demo/classes/Vec.py
parent3a742c699f6806c1145aea5149bf15de15a0afd7 (diff)
add hg and python
Diffstat (limited to 'sys/src/cmd/python/Demo/classes/Vec.py')
-rwxr-xr-xsys/src/cmd/python/Demo/classes/Vec.py54
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()