On 21.10.12 03:15, Antoine Pitrou wrote:
The redundancy sounds like a non-issue to me, since you can implement
__float__ instead:

>>> class C:
...     def __init__(self, v):
...         self.v = v
...     def __complex__(self):
...         return self.v**0.5
...
>>> import cmath
>>> cmath.cos(C(-1))
(1.5430806348152437-7.195794243779206e-17j)
>>> cmath.cos(C(1))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: __complex__ should return a complex object

Returned value can be computed and result can be float or complex depending on values. The author of the class with defined __complex__() may not even be aware that under certain circumstances he would get a float.

*Always* write "return complex(...)" is too redundant.


_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to