저는 파이썬을 빠르게 배우면서 객체의 표현형 및 문자열 형식뿐만 아니라 대리 번호 메소드와 혼동을 겪고 있습니다. 나는 전화 X = 점 (1, 3) 다음 코드를 사용하여 얻을 :! r에 변환 필드가 평가를 사용하여 다른 동일한 개체를 만드는 파이썬에 의해 평가 될 수있는 문자열의 변수를 나타내는입니다문자열을 형식화하는 파이썬의 표현식
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)
경우 없는이 작업을 수행하는 이유() 문은! 포인트 (1, 3) 또는 이와 유사한 :
class Point():
def __init__(self, x, y):
'''Initilizae the object'''
self.x = x
self.y = y
def __repr__(self):
return "{!r}".format(self)
def distance_from_origin(self):
return math.hypot(self.x, self.y)
>>>x
File "C:\...\...\examplepoint.py, line 8, in __repr__
return "{!r}".format(self)
File "C:\...\...\examplepoint.py, line 8, in __repr__
return "{!r}".format(self)
File "C:\...\...\examplepoint.py, line 8, in __repr__
return "{!r}".format(self)
File "C:\...\...\examplepoint.py, line 8, in __repr__
return "{!r}".format(self)
The same error for 100 more lines
RuntimeError: maximum recursion depth exceeded
본인은 R 규격은 같을 것이다 표현 형태의 문자열로 객체 X 형 포인트를 만들 것이라고 생각 첫 번째 실행합니다. 파이썬은이 표현을 문자열 형식으로 정확히 어떻게 표현합니까? 정확히 무엇을 의미합니까? 두 번째 예제가 작동하지 않는 이유는 무엇입니까?
여기 [파이썬 문자열 형식 :! s 변환 플래그를 사용하는 경우] (http://stackoverflow.com/questions/25441628/python-string-format-when-to-use-s-conversion- 깃발). "현재 두 개의 변환 플래그가 지원됩니다. '! s'는 값에 str()을 호출하고 repr()을 호출하는 '! r'을 나타냅니다. – Lack