[Python] operatore percentuali

Marco Giusti marco.giusti a gmail.com
Sab 15 Giu 2013 19:55:01 CEST


On Sat, Jun 15, 2013 at 07:33:00PM +0200, Diego Barrera wrote:
> Il 15/06/2013 19:03, Marco Beri ha scritto:
> >
> >Beh, esiste già: *100.0/
> >
> >Infatti 8 * 100.0 / 80 = 10.0
> >
> >X = Y% of Z
> >X = Z * Y / 100
> >Y = X * 100 / Z
> >
> >Non vedo molto l'utilità di trasformare *100.0/ in %of
> >
> >Ciao.
> >Marco.
> >
> Colgo l'occasione per fare una domanda che mi sono sempre fatto
> e che mi sono sempre vergognato di fare:
> se a + b
> in realta' non e' altro che
> sum(a,b)
> perche' non mi posso creare le mie funzioni binarie utilizzando
> l'altra notazione?
> O meglio perche' '+' (e compagnia) si' mentre '%of ' no?
> o tutti o nessuno!

perché sum() è definita come 

	def sum(a, b):
		return a + b

e non il contrario. per definire una nuova operazione il parser ne deve
essere cosciente, ma quello che puoi fare è ridefinire __mod__:

	>>> class Integer(int):
	...  def __mod__(self, percentage):
	...   return self / 100.0 * percentage
	... 
	>>> a = Integer(30)
	>>> a % 50
	15.0
	>>> 

ciao
m.


Maggiori informazioni sulla lista Python