2

Say I have defined a class myself and I defined a __repr__ method for it. I want to about convert it back to my object. I know that object serialization may be a good way of doing so (using the json module) but is there anyway I can use the built-in eval function to achieve this?

Jeremy
  • 1
  • 85
  • 340
  • 366
Bob Fang
  • 6,963
  • 10
  • 39
  • 72

1 Answers1

4

Write your __repr__() so it creates a valid Python expression for instantiating your object.

class MyClass(object):
    def __init__(self, a, b):
        self.a = a
        self.b = b
    def __repr__(self):
        return "%s(%r, %r)" % (type(self).__name__, self.a, self.b)

Obviously this relies on the values you're using having their own reasonable repr().

You don't have to define any special eval()—just pass in whatever you get from repr().

kindall
  • 178,883
  • 35
  • 278
  • 309