On 12/03/2010 07:53 PM, Stefan Behnel wrote:
> Lisandro Dalcin, 03.12.2010 19:39:
>    
>> On 3 December 2010 15:10, Stefan Behnel wrote:
>>      
>>> I just implemented C access to the fields of CPython's builtin types like 
>>> this:
>>>
>>>       cdef complex c = 1+2j
>>>       c.real, c.imag = 10, 20
>>>       print (c.real, c.imag)
>>>
>>> and then noticed that "real" and "imag" are actually read-only in Python.
>>> So I wonder if we should disallow the above (i.e. raise a compiler error
>>> during type analysis) and instead only allow this:
>>>
>>>       cdef complex c = 1+2j
>>>       cval =&c.cval
>>>       cval.real, cval.imag = 10, 20
>>>       print (c.real, c.imag)
>>>
>>> (which also works now, BTW).
>>>
>>> Opinions?
>>>        
>> No! No! No!
>>
>> In Python, you cannot assign to real or imag simply because the
>> complex is immutable (like Python ints and floats). For C types,
>> immutability does not apply!
>>      
> I understand that. However, I hope that you are talking about the builtin
> Python complex type just like I am. Given that these two fields carry the
>    

No. If you do "cdef complex c", what you have is a C complex type.

How would you treat "cdef float complex c"? Python has no object for 
single precision complex.

Dag Sverre


> same name as the Python visible attributes, this introduces behaviour that
> diverges from CPython's own behaviour. Making these fields mutable means
> that you will get an exception when you modify the field in CPython but a
> straight value update after you compiled your code.
>
> Would it be so bad to require
>
>       c.cval.real = 3.3
>
> instead of
>
>       c.real = 3.3
>
> if you *really* think you must change the value of an immutable complex 
> object?
>
> BTW, the main reason why I implemented was the (mutable) slice type, not so
> much the complex type.
>
> Stefan
> _______________________________________________
> Cython-dev mailing list
> [email protected]
> http://codespeak.net/mailman/listinfo/cython-dev
>    

_______________________________________________
Cython-dev mailing list
[email protected]
http://codespeak.net/mailman/listinfo/cython-dev

Reply via email to