Re: Operator overloading

2008-01-26 Thread Terry Reedy
| > > Sure. Cosines are a monadic operation and the monadic '+' is a NOP, so | > > why shouldn't I define +45 to return cosine of 45, (presuming I needed | > > lots of cosines). I'd even let you define your own operators. Lots of | > > programmers really liked '++' and '--', for examples. One c

Re: Operator overloading

2008-01-26 Thread MRAB
On Jan 25, 8:52 pm, Hexamorph <[EMAIL PROTECTED]> wrote: > [EMAIL PROTECTED] wrote: > > > Hexamorph wrote: > >> You mean you want the ability to change for example the + operator > >> for ints to something like calculating the cosine instead of doing > >> addition? > > > Sure. Cosines are a monadic

Re: Operator overloading

2008-01-25 Thread Hexamorph
[EMAIL PROTECTED] wrote: > > Hexamorph wrote: >> You mean you want the ability to change for example the + operator >> for ints to something like calculating the cosine instead of doing >> addition? > > Sure. Cosines are a monadic operation and the monadic '+' is a NOP, so > why shouldn't I defin

Re: Operator overloading

2008-01-25 Thread MartinRinehart
Hexamorph wrote: > You mean you want the ability to change for example the + operator > for ints to something like calculating the cosine instead of doing > addition? Sure. Cosines are a monadic operation and the monadic '+' is a NOP, so why shouldn't I define +45 to return cosine of 45, (presum

Re: Operator overloading

2008-01-25 Thread Hexamorph
[EMAIL PROTECTED] wrote: > > Diez B. Roggisch wrote: >> No, there is no way. You would change general interpreter behavior if >> you could set arbitrary operators for predefined types. >> >> Start grumping... > > Thank you, Diez. > > If I ever design a language, please remind me that complete, e

Re: Operator overloading

2008-01-25 Thread Diez B. Roggisch
[EMAIL PROTECTED] schrieb: > > Diez B. Roggisch wrote: >> No, there is no way. You would change general interpreter behavior if >> you could set arbitrary operators for predefined types. >> >> Start grumping... > > Thank you, Diez. > > If I ever design a language, please remind me that complete,

Re: Operator overloading

2008-01-25 Thread MartinRinehart
Diez B. Roggisch wrote: > No, there is no way. You would change general interpreter behavior if > you could set arbitrary operators for predefined types. > > Start grumping... Thank you, Diez. If I ever design a language, please remind me that complete, easy, well-documented access to the worki

Re: Operator overloading

2008-01-25 Thread Diez B. Roggisch
[EMAIL PROTECTED] schrieb: > If it were my choice, the plus sign would do this: > > def itemadd( i1, i2 ): > if ( type(i1) == str ) or ( type(i2) == str ): > return str(i1) + str(i2) > else: > return i1 + i2 > > I'd like to redefine it so it works my way but operator overl

Re: operator overloading on built-ins

2007-11-08 Thread Marc 'BlackJack' Rintsch
On Thu, 08 Nov 2007 22:53:16 -0800, r.grimm wrote: (1).__cmp__(10) > -1 As the dot is an operator like ``+`` or ``/`` you can also add spaces to avoid the ambiguity: In [493]: 1 . __cmp__(10) Out[493]: -1 In [494]: 1 .__cmp__(10) Out[494]: -1 Ciao, Marc 'BlackJack' Rintsch -- htt

Re: operator overloading on built-ins

2007-11-08 Thread Steven Bethard
[EMAIL PROTECTED] wrote: (1).__cmp__(10) > -1 Integer object "(1)" followed by method call ".__cmp__(10)" 1.__cmp__(10) > File "", line 1 > 1.__cmp__(10) > ^ > SyntaxError: invalid syntax Floating point number "1." followed by "__cmp__(10)". STeVe -- http://mail.pyt

Re: operator overloading

2007-04-05 Thread Steve Holden
[EMAIL PROTECTED] wrote: > On Apr 4, 4:55 pm, "Terry Reedy" <[EMAIL PROTECTED]> wrote: >> "Ziga Seilnacht" <[EMAIL PROTECTED]> wrote in message >> >> news:[EMAIL PROTECTED] >> | This looks like a bug in Python. It works for all the other >> | operators: > [SNIP] >> | >>> i ** 3 >> | 74088 >> | >> |

Re: operator overloading

2007-04-04 Thread Lenard Lindstrom
looping wrote: > Hi, > for the fun I try operator overloading experiences and I didn't > exactly understand how it works. > > Here is my try: class myint(int): > def __pow__(self, value): > return self.__add__(value) > a = myint(3) a ** 3 > 6 > > OK, it works.

Re: operator overloading

2007-04-04 Thread Terry Reedy
<[EMAIL PROTECTED]> wrote in message news:[EMAIL PROTECTED] | FWIW: | Python 2.5 (r25:51908, Jan 21 2007, 03:10:25) | [GCC 3.4.6 20060404 (Red Hat 3.4.6-3)] on HOSTNAME_REDACTED | Type "help", "copyright", "credits" or "license" for more information. | >>> class MyInt(int): | ... __pow__ = in

Re: operator overloading

2007-04-04 Thread [EMAIL PROTECTED]
On Apr 4, 4:55 pm, "Terry Reedy" <[EMAIL PROTECTED]> wrote: > "Ziga Seilnacht" <[EMAIL PROTECTED]> wrote in message > > news:[EMAIL PROTECTED] > | This looks like a bug in Python. It works for all the other > | operators: [SNIP] > | >>> i ** 3 > | 74088 > | > | You should submit a bug report to the

Re: operator overloading

2007-04-04 Thread Terry Reedy
"Ziga Seilnacht" <[EMAIL PROTECTED]> wrote in message news:[EMAIL PROTECTED] | This looks like a bug in Python. It works for all the other | operators: | | >>> class MyInt(int): | ... __sub__ = int.__add__ | ... __mul__ = int.__add__ | ... __div__ = int.__add__ | ... __truediv__ =

Re: operator overloading

2007-04-04 Thread 7stud
On Apr 4, 12:41 pm, "7stud" <[EMAIL PROTECTED]> wrote: > According to Python in a Nutshell(p.102), a name that is a slot can > only be "bound"(i.e. assigned to) inside the class body. Upon closer reading, it actually says that the name "__slots__" has to be bound inside the class body for the sl

Re: operator overloading

2007-04-04 Thread 7stud
On Apr 4, 12:41 pm, "7stud" <[EMAIL PROTECTED]> wrote: > On Apr 4, 3:36 am, "looping" <[EMAIL PROTECTED]> wrote: > > > > > Hi, > > for the fun I try operator overloading experiences and I didn't > > exactly understand how it works. > > > Here is my try:>>> class myint(int): > > > def __pow_

Re: operator overloading

2007-04-04 Thread 7stud
On Apr 4, 3:36 am, "looping" <[EMAIL PROTECTED]> wrote: > Hi, > for the fun I try operator overloading experiences and I didn't > exactly understand how it works. > > Here is my try:>>> class myint(int): > > def __pow__(self, value): > return self.__add__(value) > > >>> a =

Re: operator overloading

2007-04-04 Thread Ziga Seilnacht
looping wrote: > Hi, > for the fun I try operator overloading experiences and I didn't > exactly understand how it works. > > Here is my try: > >>> class myint(int): > > def __pow__(self, value): > return self.__add__(value) > > >>> a = myint(3) > >>> a ** 3 > > 6 > > OK, it

Re: operator overloading + - / * = etc...

2006-10-13 Thread Bruno Desthuilliers
Terry Reedy wrote: > "Bruno Desthuilliers" <[EMAIL PROTECTED]> wrote in message > news:[EMAIL PROTECTED] >> Terry Reedy wrote: >>> "Bruno Desthuilliers" <[EMAIL PROTECTED]> wrote in message >>> news:[EMAIL PROTECTED] The current namespace object, of course. >>> Implementing a namespace as a P

Re: operator overloading + - / * = etc...

2006-10-13 Thread Piet van Oostrum
> Fredrik Lundh <[EMAIL PROTECTED]> (FL) wrote: >FL> Piet van Oostrum wrote: >>> The official Python documentation (language reference manual) talks a lot >>> about variables. So it seems silly to say that Python doesn't have >>> variables. >FL> the language reference mostly uses the term "va

Re: operator overloading + - / * = etc...

2006-10-12 Thread OKB (not okblacke)
Terry Reedy wrote: > Implementing a namespace as a Python object (ie, dict) is > completely optional and implementation dependent. For CPython, the > local namespace of a function is generally *not* done that way. Sure, but this is all just theoretical talk anyway, right? I would like

Re: operator overloading + - / * = etc...

2006-10-12 Thread Terry Reedy
"Bruno Desthuilliers" <[EMAIL PROTECTED]> wrote in message news:[EMAIL PROTECTED] > Terry Reedy wrote: >> "Bruno Desthuilliers" <[EMAIL PROTECTED]> wrote in message >> news:[EMAIL PROTECTED] >>> The current namespace object, of course. >> >> Implementing a namespace as a Python object (ie, dict)

Re: operator overloading + - / * = etc...

2006-10-12 Thread Bruno Desthuilliers
Terry Reedy wrote: > "Bruno Desthuilliers" <[EMAIL PROTECTED]> wrote in message > news:[EMAIL PROTECTED] >> The current namespace object, of course. > > Implementing a namespace as a Python object (ie, dict) is completely > optional and implementation dependent. For CPython, the local namespace

Re: operator overloading + - / * = etc...

2006-10-12 Thread Bruno Desthuilliers
Georg Brandl wrote: > Bruno Desthuilliers wrote: >> Steven D'Aprano wrote: >>> On Sat, 07 Oct 2006 17:21:55 -0500, Tim Chase wrote: >>> >> With the caveat of the "=" mentioned in the subject-line (being >> different from "==")...I haven't found any way to override >> assignment in the g

Re: operator overloading + - / * = etc...

2006-10-10 Thread Leif K-Brooks
Paul Rubin wrote: > The symbols on the left side of = signs are called variables even in > Haskell, where they don't "vary" (you can't change the value of a > variable once you have set it). FWIW, that's the original, mathematical meaning of the word 'variable'. They _do_ vary, but only when you

Re: operator overloading + - / * = etc...

2006-10-10 Thread Fredrik Lundh
Paul Rubin wrote: > The symbols on the left side of = signs are called variables even in > Haskell, where they don't "vary" (you can't change the value of a > variable once you have set it). at the language specification level, the things to the left side of = signs are called "targets" in Pytho

Re: operator overloading + - / * = etc...

2006-10-10 Thread Fredrik Lundh
Piet van Oostrum wrote: > The official Python documentation (language reference manual) talks a lot > about variables. So it seems silly to say that Python doesn't have > variables. the language reference mostly uses the term "variables" when discussing local variables and instance variables, an

Re: operator overloading + - / * = etc...

2006-10-10 Thread Paul Rubin
Piet van Oostrum <[EMAIL PROTECTED]> writes: > The official Python documentation (language reference manual) talks a lot > about variables. So it seems silly to say that Python doesn't have > variables. The symbols on the left side of = signs are called variables even in Haskell, where they don't

Re: operator overloading + - / * = etc...

2006-10-10 Thread Piet van Oostrum
> Steven D'Aprano <[EMAIL PROTECTED]> (SD) wrote: >SD> Despite sloppy talk to the contrary (which I think most of us do from time >SD> to time), Python doesn't have variables. It has names and objects. Names >SD> are just labels -- there is no difference in behavior between the *names* >SD> th

Re: operator overloading + - / * = etc...

2006-10-10 Thread Paul Rubin
Antoon Pardon <[EMAIL PROTECTED]> writes: > Suppose one has the following intention in mind: > > while x = setup(): > if y = pre_process() in ErrorCondition: > break > post_process(y) > else: > NormalTermination() Maybe we need a new itertools function: def forever(func,

Re: operator overloading + - / * = etc...

2006-10-10 Thread Antoon Pardon
On 2006-10-10, Paul Rubin wrote: > "Fredrik Lundh" <[EMAIL PROTECTED]> writes: >> or for the perhaps-overly-clever hackers, >> >> for x in iter(lambda: foo() or None, None): >> process(x) > > for x in takewhile(bool, (foo() for _ in repeat(None))): > process(x) > > Meh, both ar

Re: operator overloading + - / * = etc...

2006-10-10 Thread Paul Rubin
Antoon Pardon <[EMAIL PROTECTED]> writes: > >>> for x in takewhile(foo() for _ in repeat(None)): > ... print x > ... > Traceback (most recent call last): > File "", line 1, in ? > TypeError: takewhile expected 2 arguments, got 1 Yeah, I cancelled and posted a followup for x in takewhile(boo

Re: operator overloading + - / * = etc...

2006-10-10 Thread Antoon Pardon
On 2006-10-10, Paul Rubin wrote: > "Fredrik Lundh" <[EMAIL PROTECTED]> writes: >> or for the perhaps-overly-clever hackers, >> >> for x in iter(lambda: foo() or None, None): >> process(x) > > for x in takewhile(foo() for _ in repeat(None)): >process (x) >>> for x in takewhile(foo

Re: operator overloading + - / * = etc...

2006-10-10 Thread Paul Rubin
"Fredrik Lundh" <[EMAIL PROTECTED]> writes: > or for the perhaps-overly-clever hackers, > > for x in iter(lambda: foo() or None, None): > process(x) for x in takewhile(bool, (foo() for _ in repeat(None))): process(x) Meh, both are ugly. -- http://mail.python.org/mailman/listi

Re: operator overloading + - / * = etc...

2006-10-10 Thread Paul Rubin
"Fredrik Lundh" <[EMAIL PROTECTED]> writes: > or for the perhaps-overly-clever hackers, > > for x in iter(lambda: foo() or None, None): > process(x) for x in takewhile(foo() for _ in repeat(None)): process (x) -- http://mail.python.org/mailman/listinfo/python-list

Re: operator overloading + - / * = etc...

2006-10-10 Thread Fredrik Lundh
Roman Neuhauser wrote: > People who complain often fail to see how > >x = foo() >while x: >process(x) >x = foo() > >is safer than > >while x = foo(): >process(x) that's spelled: for x in foo(): process(x) in Python, or, if foo() just refuses b

Re: operator overloading + - / * = etc...

2006-10-10 Thread Roman Neuhauser
# [EMAIL PROTECTED] / 2006-10-08 11:44:18 +0100: > That's because assignment isn't an operator - that's why (for example) > > print x = 33 > > would be a syntax error. This is a deliberate design decision about > which, history shows, there is little use complaining. Just to clarify: n

Re: operator overloading + - / * = etc...

2006-10-10 Thread Theerasak Photha
On 9 Oct 2006 11:27:40 GMT, Antoon Pardon <[EMAIL PROTECTED]> wrote: > I honestly don't see why "variable" would be an inappropiate word to use. > AFAIU, python assignment seems to behave much like lisp and smalltalk > and I never heard that those communities found the word "variable" > inappropia

Re: operator overloading + - / * = etc...

2006-10-09 Thread Terry Reedy
"Bruno Desthuilliers" <[EMAIL PROTECTED]> wrote in message news:[EMAIL PROTECTED] > > The current namespace object, of course. Implementing a namespace as a Python object (ie, dict) is completely optional and implementation dependent. For CPython, the local namespace of a function is generall

Re: operator overloading + - / * = etc...

2006-10-09 Thread Georg Brandl
Bruno Desthuilliers wrote: > Steven D'Aprano wrote: >> On Sat, 07 Oct 2006 17:21:55 -0500, Tim Chase wrote: >> > With the caveat of the "=" mentioned in the subject-line (being > different from "==")...I haven't found any way to override > assignment in the general case. Why would

Re: operator overloading + - / * = etc...

2006-10-09 Thread Bruno Desthuilliers
Steven D'Aprano wrote: > On Sat, 07 Oct 2006 17:21:55 -0500, Tim Chase wrote: > With the caveat of the "=" mentioned in the subject-line (being different from "==")...I haven't found any way to override assignment in the general case. >>> Why would you want to do that? >> For the sa

Re: operator overloading + - / * = etc...

2006-10-09 Thread Antoon Pardon
On 2006-10-08, Steven D'Aprano <[EMAIL PROTECTED]> wrote: > On Sat, 07 Oct 2006 17:21:55 -0500, Tim Chase wrote: > With the caveat of the "=" mentioned in the subject-line (being different from "==")...I haven't found any way to override assignment in the general case. >>> >>> Why w

Re: operator overloading + - / * = etc...

2006-10-08 Thread SpreadTooThin
Daniel Nogradi wrote: > > Can these operators be overloaded? > > If so. How? > > > > http://www.python.org/doc/ref/numeric-types.html > > HTH, > Daniel Thanks everyone. -- http://mail.python.org/mailman/listinfo/python-list

Re: operator overloading + - / * = etc...

2006-10-08 Thread Steve Holden
Tim Chase wrote: >>>Can these operators be overloaded? >> >>Yes. > > > With the caveat of the "=" mentioned in the subject-line (being > different from "==")...I haven't found any way to override > assignment in the general case. There might be some oddball way > to do it via property() but A

Re: operator overloading + - / * = etc...

2006-10-07 Thread Steven D'Aprano
On Sat, 07 Oct 2006 17:21:55 -0500, Tim Chase wrote: >>> With the caveat of the "=" mentioned in the subject-line (being >>> different from "==")...I haven't found any way to override >>> assignment in the general case. >> >> Why would you want to do that? > > For the same reason one would use p

Re: operator overloading + - / * = etc...

2006-10-07 Thread Tim Chase
>> With the caveat of the "=" mentioned in the subject-line (being >> different from "==")...I haven't found any way to override >> assignment in the general case. > > Why would you want to do that? For the same reason one would use property() to create getter/setter functions for a particular v

Re: operator overloading + - / * = etc...

2006-10-07 Thread Sybren Stuvel
Tim Chase enlightened us with: > With the caveat of the "=" mentioned in the subject-line (being > different from "==")...I haven't found any way to override > assignment in the general case. Why would you want to do that? Sybren -- Sybren Stüvel Stüvel IT - http://www.stuvel.eu/ -- http://ma

Re: operator overloading + - / * = etc...

2006-10-07 Thread Georg Brandl
Tim Chase wrote: >>> Can these operators be overloaded? >> >> Yes. > > With the caveat of the "=" mentioned in the subject-line (being > different from "==")...I haven't found any way to override > assignment in the general case. There might be some oddball way > to do it via property() but A

Re: operator overloading + - / * = etc...

2006-10-07 Thread Tim Chase
>> Can these operators be overloaded? > > Yes. With the caveat of the "=" mentioned in the subject-line (being different from "==")...I haven't found any way to override assignment in the general case. There might be some oddball way to do it via property() but AFAIK, this only applies to pr

Re: operator overloading + - / * = etc...

2006-10-07 Thread Daniel Nogradi
> Can these operators be overloaded? > If so. How? > http://www.python.org/doc/ref/numeric-types.html HTH, Daniel -- http://mail.python.org/mailman/listinfo/python-list

Re: operator overloading + - / * = etc...

2006-10-07 Thread Sybren Stuvel
SpreadTooThin enlightened us with: > Can these operators be overloaded? Yes. > If so. How? Implement __add__, __sub__ etc. in the class that you want to be able to add, subtract, etc. Sybren -- Sybren Stüvel Stüvel IT - http://www.stuvel.eu/ -- http://mail.python.org/mailman/listinfo/pytho

RE: Operator Overloading Basics

2006-08-28 Thread Mohit Bhatt
Thanks a lot Fredrik and Tim for your help. Cheers, Mohit -- http://mail.python.org/mailman/listinfo/python-list

Re: Operator Overloading Basics

2006-08-28 Thread Tim Chase
> obj1 = c1(1) > > obj1 + 10 # this works just fine > 10 + obj1 # throws exception > Q. What do I have to do to make the following line work? > > 10 + obj1 http://docs.python.org/ref/numeric-types.html You want to read the section on __radd__ (and it's o

Re: Operator Overloading Basics

2006-08-28 Thread Fredrik Lundh
Mohit Bhatt wrote: > Hello, > > I just started out with python( couple of weeks). > > I have a query regarding Operator Overloading > > class c1: > def __init__(self,value): > self.data = value > def __add__ (self,operand2): >

Re: Operator Overloading

2005-08-01 Thread Calvin Spealman
On 1 Aug 2005 05:12:47 -, Gurpreet Sachdeva <[EMAIL PROTECTED]> wrote: > Hi, > > Is there any provision in python which allows me to make my own operators? > > My problem is that I need to combine two dictonaries with their keys and I > don't want to use any of the existing operators lik

Re: Operator Overloading

2005-08-01 Thread Robert Kern
Gurpreet Sachdeva wrote: > > Hi, > > Is there any provision in python which allows me to make my own operators? > > My problem is that I need to combine two dictonaries with their keys and > I don't want to use any of the existing operators like '+','-','*'. > So is there a way I can make '**'

Re: Operator Overloading

2004-11-29 Thread Bengt Richter
On 25 Nov 2004 06:35:23 -0800, [EMAIL PROTECTED] (Sebastien Boisgerault) wrote: >Peter Maas <[EMAIL PROTECTED]> wrote in message news:<[EMAIL PROTECTED]>... >> Sebastien Boisgerault schrieb: >> > I wonder if the following quotation from the Python Reference Manual >> > (release 2.3.3) about opera