Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为集合容器定义“str”和“repr”_Python_String_Repr - Fatal编程技术网

Python 为集合容器定义“str”和“repr”

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

我一直在做一个大作业,我几乎完成了,除了我需要帮助编写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, 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)
取代,当然,这将完全取决于它是什么,并使它成为一种面向对象的设计。