Python 如何使用_urepr_uu从中创建新对象?
这是我真的不明白的。我正在尝试使用Python 如何使用_urepr_uu从中创建新对象?,python,repr,Python,Repr,这是我真的不明白的。我正在尝试使用\uuu repr\uu从其输出创建一个新对象 我有一个类OrderedSet,它包含一个列表和组织它的方法。 此类的str方法是 def __str__(self): s = "Set contains: " for elem in self.list: s += (" '" + elem + "'") return s 现在我应该使用\uuuu repr\uuuu从中实例化一个新对象。 如Orderedset second=repr
\uuu repr\uu
从其输出创建一个新对象
我有一个类OrderedSet,它包含一个列表和组织它的方法。
此类的str方法是
def __str__(self):
s = "Set contains: "
for elem in self.list: s += (" '" + elem + "'")
return s
现在我应该使用\uuuu repr\uuuu
从中实例化一个新对象。
如Orderedset second=repr(first)
我可以这样做吗
def __repr__(self):
return self.list.__str__()
否。\uuuu repr\uuuu()
必须返回字符串,否则大量代码将中断
尝试这种方法:\uuu repr\uuu()
应该返回有效的Python代码。这样你就可以
second = eval(repr(first))
也就是说,整个想法看起来很可疑。感觉就像你试图想出一个聪明的方法来序列化或克隆对象
用于序列化,或者可能用于json
模块。要克隆,请使用。使用\uuuuu repr\uuuuu
创建新对象”背后的思想是\uuuu repr\uuuu
的输出,当使用eval
进行解释时,会创建原始对象的(副本)。例如,repr(“foo”)
return“foo”
(包括“
),或repr([1,2,3])
返回[1,2,3]
在您的示例中,您可能需要以下内容:
def __repr__(self):
return "OrderedSet(%r)" % self.list
以及相应的构造函数:
def __init__(self, elements):
self.list = elements
这样,
repr(OrderedSet([1,2,3])
返回字符串OrderedSet([1,2,3])
,当eval
计算时,该字符串将调用构造函数并创建类的新实例。使用eval(repr(某些对象))
?请参见,例如,作为旁注:列表
是一个错误的变量名,因为存在同名的内置函数。