2024-09-27 18:54:11 发布
网友
我正在使用一个类来模拟python列表。我想在没有索引的情况下访问它时将其作为python list()返回。在
使用普通列表():
>>> a = [1,2,3] >>> a [1,2,3]
我得到的,基本上是:
我不知道哪个dunder方法(如果有的话)允许我定制这个行为?在
我觉得应该是?虽然list()没有实现get/set/delete-我猜是因为它是一个内置的?在
您正在寻找wolud的方法是__repr__。 另请参见http://docs.python.org/reference/datamodel.html#object.repr
__repr__
您应该重写类中的__repr__方法(也可以选择使用__str__方法),有关差异的讨论,请参阅post。在
__str__
像这样:
class MyList(object): def __repr__(self): # iterate over elements and add each one to resulting string
正如注释中所指出的,str()如果__str__没有定义,str()调用__repr__,但是如果__repr__没有定义,repr()则不调用__str__。在
str()
repr()
一个非常简单的例子:
class MyList(object): def __init__(self,arg): self.mylist = arg def __repr__(self): return 'MyList(' + str(self.mylist) + ')' def __str__(self): return str(self.mylist) def __getitem__(self,i): return self.mylist[i] a = MyList([1,2,3]) print a print repr(a) for x in a: print x
输出:
您正在寻找wolud的方法是
__repr__
。 另请参见http://docs.python.org/reference/datamodel.html#object.repr您应该重写类中的
__repr__
方法(也可以选择使用__str__
方法),有关差异的讨论,请参阅post。在像这样:
正如注释中所指出的,
str()
如果__str__
没有定义,str()
调用__repr__
,但是如果__repr__
没有定义,repr()
则不调用__str__
。在一个非常简单的例子:
输出:
^{pr2}$相关问题 更多 >
编程相关推荐