Python 为集合容器定义“str”和“repr”
我一直在做一个大作业,我几乎完成了,除了我需要帮助编写Set容器的Python 为集合容器定义“str”和“repr”,python,string,repr,Python,String,Repr,我一直在做一个大作业,我几乎完成了,除了我需要帮助编写Set容器的\uuu str\uuuuuuuuu和\uuuu repr\uuuuu函数 我从来没有这样做过,也不知道该怎么做。在互联网上搜索,我仍然被困 我试过这样的方法: '%s(%r)' % (self.__class__, self) def __repr__(self): return 'set(%r)' % [item for item in self] 我需要打印出这样的陈述: 'set([ELEMENT_1, ELE
\uuu str\uuuuuuuuu
和\uuuu repr\uuuuu
函数
我从来没有这样做过,也不知道该怎么做。在互联网上搜索,我仍然被困
我试过这样的方法:
'%s(%r)' % (self.__class__, self)
def __repr__(self):
return 'set(%r)' % [item for item in self]
我需要打印出这样的陈述:
'set([ELEMENT_1, ELEMENT_2,..., ELEMENT_N])'
我的元素存储在一个数组类中,我编写了集合容器。我通过一个循环来访问它,如for item in self
或if item in self
请帮忙?我想以下方法可以奏效:
def __repr__(self):
return 'set([%s])' % ', '.join(self)
请参阅此部分,详细说明\uuuu str\uuuuu
和\uuuu repr\uuuu
之间的区别
基本实现类似于:
'%s(%r)' % (self.__class__, self)
def __repr__(self):
return 'set(%r)' % [item for item in self]
像这样简单的方法可能已经足够好了,可以兼顾两种方法:
class Set(object):
def __init__(self):
self.array = ...
def __repr__(self):
return '{}({!r})'.format(self.__class__.__name__, self.array)
__str__ = __repr__
这可能有助于您理解[Stack overflow page talking to the differences of repr and str][1][1]:“如果定义了
\uuuuuu repr\uuuu
,而\uuuuu str\uuuu
未定义,则对象的行为将相当于\uuuuu str=\uuuuu repr\uuu
”。不过主要的一点是格式字符串中的{!r}
,它将被repr(self.array)
取代,当然,这将完全取决于它是什么,并使它成为一种面向对象的设计。