问题
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?
回答1:
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().
来源:https://stackoverflow.com/questions/14656645/allowing-the-repr-of-my-classs-instances-to-be-parsed-by-eval