0

Suppose I have this class set up

class X:
  def __init__(self, name):
    self.name = name
    self.friends = []

  def addFriend(self, name):
    self.friends.append(name)

  def getFriends(self):
    return self.friends    

joe = X('joe')
tom = X('tom')
joe.addFriend(tom)
joe.getFriends()

When I call joe.getFriends() I'm expecting to get [tom]. Instead I'm getting the following

[<__main__.X at 0x25eb81187f0>]

I think I'm missing something really simple so I need some pointers in the right direction. Thanks.

mospira
  • 21
  • 4

1 Answers1

0

To specify how your class instance is represented, define the __repr__ method:

class X:
  def __init__(self, name):
    self.name = name
    self.friends = []

  def addFriend(self, name):
    self.friends.append(name)

  def getFriends(self):
    return self.friends    

  def __repr__(self):
      return self.name


joe = X('joe')
tom = X('tom')
joe.addFriend(tom)
joe.getFriends()

Output:

[tom]

This also works for print:

print(tom)

Output:

tom
Flursch
  • 483
  • 2
  • 4