How to implement a union (C data type) in Python?

chads lamote1 at netscape.net
Mon Mar 8 13:24:53 EST 2004


Miki Tebeka wrote:

> Hello Chad,
> 
>> How would one implement a union (C data type) in Python, given this
>> simple example?
>>
>> union {
>>    struct {
>>       int size;
>>       float time;
>>    } var1;
>>    struct {
>>       char initial;
>>       float time;
>>    } var2;
>> };
> 
> You can't, but you're thinking in C and not in Python ;-)
> 
> Python variables are dynamically typed, this means
> a = 100
> a = "Hello"
> a = lambda x: x * 2
> 
> Is OK in Python.
> 
> You should use classes where you use structs in C
> class var1:
>     def __init__(self, size, time):
>         self.size = size
>         self.time = time
> class var2:
>     def __init__(self, initial, time):
>         self.initial = initial
>         self.time = time
> 
> And to check the type of variable you can use `isinstance' function.
> I don't recommend using the above, have each function return one type of 
> object only. Unions were created to same memory, Python is the wrong 
> language for such optimizations. If you need to save memory using unions 
> I suggest coding in C and using SWIG/Boost.Python to export the C module 
> to Python.
> 
> HTH.
> Miki

Thanks




More information about the Python-list mailing list