这不是我真正得到的。我试图用来__repr__从其输出创建一个新对象。
我有一个OrderedSet类,它包含一个列表和组织它的方法。此类的str方法是
def __str__(self):
s = "Set contains: "
for elem in self.list: s += (" '" + elem + "'")
return s
Run Code Online (Sandbox Code Playgroud)
现在,我应该以__repr__某种方式使用它来实例化一个新对象。喜欢Orderedset second = repr(first)
我可以这样吗?
def __repr__(self):
return self.list.__str__()
Run Code Online (Sandbox Code Playgroud)
“使用创建新对象”背后的想法__repr__是, 的输出__repr__ 可以是有效的 python 代码,当用 解释时eval,它会创建原始对象(的副本)。例如,repr("foo")return "'foo'"(包括引号)或repr([1,2,3])returns '[1, 2, 3]'。
在你的例子中,你可能需要这样的东西:
def __repr__(self):
return "OrderedSet(%r)" % self.list
Run Code Online (Sandbox Code Playgroud)
以及相应的构造函数:
def __init__(self, elements):
self.list = elements
Run Code Online (Sandbox Code Playgroud)
这样,repr(OrderedSet([1,2,3]))返回 string OrderedSet([1,2,3]),该 string 在eval使用时将调用构造函数并创建该类的新实例。
| 归档时间: |
|
| 查看次数: |
1854 次 |
| 最近记录: |