저는 파이썬에 익숙하지 않아 매달 예산을 학습 기회로 관리 할 모듈을 만들기로 결정했습니다. 모듈의 기본 객체가객체 속성을 호출 할 때 최대 재귀를 초과했습니다.
class Debit(object):
currency = "SEK"
def __init__(self,date,tag,ammount):
self.date = date
self.tag = tag
self.ammount = ammount
나는이 객체의 속성이 올바르게 입력되었는지 제어하고, 할 수 있기를 원
으로 정의, 직불 될 것이다 그래서 나는이 같은 속성 재생하려고
@property
def date(self):
return self.date
@date.setter
def date(self, d):
if len(d) == 0:
raise Exception("Date cannot be empty")
self.date = d
NB : 사실, 나는 빈을 입력하려고하면 : 조건과 date.setter에서 예외가 관련성이 무언가로 변경됩니다, 그냥 절반 밖에 방법이 작동 예외 을 원했고 날짜 문자열, 예외가 발생했습니다. 그때 정확한 날짜를 입력하고 그러나, 나는 .date 사용하여 검색을 시도 내가 속성과 세터 내부에서 "날짜"를 지정할 때 나는 강제로 나쁜 일을하고 있다고 가정
RuntimeError: maximum recursion depth exceeded
다음과 같은 오류가 발생했습니다 파이썬을 무한 루프로 만들었지 만, 나는 그 주위에서 정말로 머리를 쓸 수 없다.
어떤 도움이 필요합니까?
날짜 자체가 재귀 적으로 호출됩니다. 날짜 데이터의 이름을'_date'와 같은 다른 이름으로 지정하십시오 – syntonym
객체 초기화 또는 속성 및 설정자를 의미합니까? –
object.date에 접근 할 때마다'def date (self)'함수가 호출됩니다. 그래서 내부에서 self.date에 접근하면 ...'date (self)'가 호출됩니다. getter와 얻은 데이터를 어떻게 든 구별해야합니다. 'self._data'를 반환 할 때'date (self)'를 호출하지 않도록 실제 데이터'_data'의 이름을 지정하면됩니다. – syntonym