This is something I don't really get. I am trying to use __repr__ to create a new object from its output.
I have a class, OrderedSet, which contains a list and methods to organize it. The str method of this class is
def __str__(self):
s = "Set contains: "
for elem in self.list: s += (" '" + elem + "'")
return s
Now I am supposed to use __repr__ in a way to instanciate a new object from it.
Like Orderedset second = repr(first)
Can I just do it like this?
def __repr__(self):
return self.list.__str__()
The idea behind "using
__repr__to create new objects" is that the output of__repr__can be valid python code, which, when interpreted witheval, creates (a copy of) the original object. For example,repr("foo")return"'foo'"(including the quotes), orrepr([1,2,3])returns'[1, 2, 3]'.In your example you probably need something like this:
as well as a corresponding constructor:
This way,
repr(OrderedSet([1,2,3]))returns the stringOrderedSet([1,2,3]), which, whenevaluated, will invoke the contructor and create a new instance of the class.