ctypes module, question on Arrays

Josh mlsj at earthlink.net
Tue Mar 18 22:31:31 EST 2003


Hi,

I have been trying to design a class which is inherited from the Array 
class in the ctypes module. Surprisingly, I cannot set the length of the 
array at runtime:

This does not work:

from ctypes import *

class Darray(Array):
    	_type_=c_double
    	
    	def __init__(self,len):
  	    	self.__class__._length_=len

Traceback (most recent call last):
  File "<pyshell#15>", line 1, in ?
    class varr(Array):
AttributeError: class must define a '_length_' attribute, which must be a 
positive integer

The only solution seems to be to set the _length_ in the class 
definition at design time like so:

class Darray(Array):
    	_type_=c_double
      _length_= 6 #Any dummy value  	
    	def __init__(self,len):
  	    	self.__class__._length_=len #And change the _length_ when     
	    	    	    	    	    	    #instantiating the class

When I do that, this happens:

>>>foo=Darray(10)

>>>foo._length_
>>>10
>>> d[8]
Traceback (most recent call last):
  File "<pyshell#18>", line 1, in ?
    d[8]
IndexError: invalid index

Why can't I access d[8] when I changed the length to 10 while 
instantiating? What's going on? And how can I set the length of the array 
at runtime?

Thanks in advance


    	






More information about the Python-list mailing list