Python Forum
operator overloading won't work
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
operator overloading won't work
#1
Hi,

When i run this code i get
(0) + (1) = (2)
while i should get
Rood Groen Blauw + Geel Paars Cyaan = Rood Groen Blauw Geel Paars Cyaan
What am i doing wrong?
Any input is much appreciated!


class MyClass:
    def __init__(self, *args):
        self.Input = args

    def __add__(self, Other):
        Output = MyClass()
        Output.Input = self.Input + Other.Input
        return Output

    def __str__(self):
        Output = ""
        for Item in Self.Input:
            Output += Item
            Output += " "
        return Output

Value1 = MyClass("Rood", "Groen", "Blauw")
Value2 = MyClass("Geel", "Paars", "Cyaan")
Value3 = Value1 + Value2

print("(0) + (1) = (2)"
        .format(Value1, Value2, Value3))
Reply
#2
First lets do the format problem. You need to use curly brackets instead of parenthesis in your format string. This is an easy mistake to make when copying code. Depending on the font, {} can look a lot like ().
print("{0} + {1} = {2}".format('a', 'b', 'c'))
Your operator overloading code doesn't work because you use Self instead of self in method __add___. When I ran your code Python told me exactly what and where the error was.
Output:
Traceback (most recent call last): File "C:\Users\djhys\Documents\python\musings\junk.py", line 21, in <module> print("{0} + {1} = {2}" File "C:\Users\djhys\Documents\python\musings\junk.py", line 12, in __str__ for Item in Self.Input: NameError: name 'Self' is not defined
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  Operator Overloading issue mp3909 4 2,263 Jun-07-2020, 06:34 PM
Last Post: buran
  unexpected sub result after overloading operator jolinchewjb 1 2,265 Jan-24-2019, 08:23 AM
Last Post: buran
  Program not running (Overloading problem) anurag123 2 2,553 Feb-19-2018, 07:23 PM
Last Post: nilamo
  Overloading error PyMan 1 2,312 Feb-19-2018, 04:57 AM
Last Post: metulburr

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020