Philip Smith wrote:
Call this a C++ programmers hang-up if you like.

I don't seem to be able to define multiple versions of __init__ in my matrix class (ie to initialise either from a list of values or from 2 dimensions (rows/columns)).

Even if Python couldn't resolve the __init__ to use on the basis of argument types surely it could do so on the basis of argument numbers???

At any rate - any suggestions how I code this????

Checking the number of arguments ain't all that hard:

class Klass:
   def __init__(*args):
       self.args = args
       if len(self.args) == 1:
           # etc.

This feels rather unpythonic, though. Maybe you could use factory functions, forgetting about __init__ all together (2.2 or higher):

class Klass(object):

    def fromList(seq):
        result = Klass()
        # populate attributes here
        # and return the requested object
        return result

    fromList = staticmethod(fromList)

    def fromDimensions(cols, rows):
        result = Klass()
        # populate attributes here
        # and return the requested object
        return result

   fromDimensions = staticmethod(fromDimensions)

   #more methods  here


k = Klass.fromList(seq) etc..


Regards --

Vincent Wehren








Thanks

Phil


--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to