This is a mess...
Piet van Oostrum
piet at cs.uu.nl
Thu Jul 16 16:01:22 EDT 2009
>>>>> Nick <nleioatt at gmail.com> (N) wrote:
>N> this is the new oop version, its pretty messy currently, and i do
>N> understand it is a simple routine, but i'm using it as an exercise to
>N> learn oop python...
>N> first the (current) traceback:
>N> [:~/python]$ python oop_covariance.py b2ar_all_test b2ar_all_test
>N> <Eigen.Eigen_vect instance at 0x7fa26c404ab8>
>N> <Eigen.Eigen_vect instance at 0x7fa26c404ab8>
>N> Traceback (most recent call last):
>N> File "oop_covariance.py", line 24, in <module>
>N> cov = set1.covariance(set2, Eigen_vect.dot)
>N> File "/home/nleioatts/python/Eigen.py", line 66, in covariance
>N> print self.vectors[i][i]
>N> AttributeError: Eigen_vect instance has no attribute '__getitem__'
self.vectors is a list of Eigen_vect objects. So self.vectors[i] is an
Eigen_vect object. Now you do a subscript on this Eigen_vect object but
you have not defined what that means. Presumably you want it to do the
subscript on the self.e_vect in the Eigen_vect instance. Therefore you
have to define the __getitem__ method in the Eigen_vect class.
class Eigen_vect:
def __init__(self, e_val, e_vect):
self.e_val = e_val
self.e_vect = e_vect
def length(self):
return len(self.e_vect)
def __getitem__(self, indx):
return self.e_vect[indx]
I hope I did not make a mistake, I didn't check it because I don't want
to make test input files.
--
Piet van Oostrum <piet at cs.uu.nl>
URL: http://pietvanoostrum.com [PGP 8DAE142BE17999C4]
Private email: piet at vanoostrum.org
More information about the Python-list
mailing list