2009-09-01 5 views
3

Je ne sais pas si cela est un bug dans la division 3.1, mais si je me souviens bien "en ligne" a fonctionné comme dans les versions pré-3K:Python 3.1 division en ligne override

Python 3.1 (r31:73574, Jun 26 2009, 20:21:35) [MSC v.1500 32 bit (Intel)] on win32 
Type "help", "copyright", "credits" or "license" for more information. 
>>> class A: 
...  def __init__(self, x): 
...    self.x = x 
...  def __idiv__(self, y): 
...    self.x /= y 
... 
>>> a = A(5) 
>>> a /= 2 

Cependant, 3.1 donne moi ceci:

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: unsupported operand type(s) for /=: 'A' and 'int' 

... ou est-ce que quelque chose me manque?

Répondre

6

Gaaah! Trouvé __floordiv__ et __truediv__. Pardon!

Si vous souhaitez me dire pourquoi 2to3 ne traduit pas __idiv__ en __truediv__ avec un __floordiv__(self, y): self.__truediv__(y), s'il vous plaît allez-y!

+2

Vous pourriez vouloir déposer un rapport de bogue à ce sujet. –

+0

Je viens de le déposer. Bonne idée - merci! –