Changeset 42

Show
Ignore:
Timestamp:
03/19/08 11:13:34 (10 months ago)
Author:
emuller
Message:

Added support for any iterable as argument

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/src/nrnpython/neuron/__init__.py

    r41 r42  
    153153            h('%s = new Vector(%d)' % (self.name, arg)) 
    154154            self.hoc_obj = getattr(h, self.name) 
    155         elif isinstance(arg,list): 
    156             h('%s = new Vector(%d)' % (self.name, len(arg))) 
    157             self.hoc_obj = getattr(h, self.name) 
    158             for i,x in enumerate(arg): 
    159                 self.x[i] = x 
     155            return 
     156        try: 
     157            # passed iterable? 
     158            arg_iter = iter(arg) 
     159        except TypeError: 
     160            raise TypeError("arg must be iteger or iterable") 
     161         
     162        h('%s = new Vector(%d)' % (self.name, len(arg))) 
     163        self.hoc_obj = getattr(h, self.name) 
     164        for i,x in enumerate(arg_iter): 
     165            self.x[i] = x 
    160166    
    161167    def __len__(self):