字符串格式python中的表示形式

2024-04-27 14:31:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在快速地学习Python,并且对对象的表示形式和字符串形式以及repr方法感到困惑。我用下面的代码调用x=Point(1,3),得到:

class Point():
def __init__(self, x, y):
    '''Initilizae the object'''
    self.x = x
    self.y = y
def __repr__(self):
    return "Point({0.x!r}, {0.y!r})".format(self)
def distance_from_origin(self):
    return math.hypot(self.x, self.y)
>>>x
Point(1, 3)

如果!r conversion字段用于表示字符串中的变量,Python可以使用eval()语句计算该变量以创建另一个完全相同的对象,为什么这不起作用:

^{pr2}$

我以为那个!r规范将对象x类型的Point创建成一个字符串,其表示形式类似于:Point(1,3)或类似于第一次运行。Python究竟是如何实现这种表示的!字符串格式的r,它到底是什么意思?为什么第二个例子不起作用?在


Tags: the对象方法字符串代码selfreturnobject
1条回答
网友
1楼 · 发布于 2024-04-27 14:31:15

!r调用对象上的repr()(内部调用__repr__)以获得字符串。要求对象在其__repr__的定义中表示是没有意义的。这是递归的,这就是回溯告诉你的。不要求对象的表示必须是可求值的,Python不会为您创建这种表示。在

相关问题 更多 >