Maximum recursion depth on class
我有一个类,我试图设置为"重复"为"真",比如:
1 2 3 | file = FileProperties(long, lat, timestamp, compas, filename) [...] file.is_duplicate = True |
我得到一个runtimeerror:调用一个python对象时超过了最大递归深度,我到底做错了什么?文件类的创建也发生在for循环中,但我认为这不是这个特定错误的问题。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | class FileProperties(object): def __init__(self, longitude, latitude, timestamp, compas, filename): self._longitude = longitude self._latitude = latitude self._timestamp = timestamp self._filename = filename self._compas = compas self._duplicate = False self._teleporting = False @property def get_lat(self): return self._latitude @property def get_long(self): return self._longitude @property def get_timestamp(self): return self._timestamp @property def get_filename(self): return self._filename @property def get_compas(self): return self._compas @property def is_duplicate(self): return self._duplicate @property def is_teleporting(self): return self._teleporting @is_duplicate.setter def is_duplicate(self, value): self.is_duplicate = value @is_teleporting.setter def is_teleporting(self, value): self._teleporting = value |
在:
1 2 3 | @is_duplicate.setter def is_duplicate(self, value): self.is_duplicate = value |
将self.is_duplicate to self._duplicate and it should work I guess(否则请提供一个最小的工作示例)。
此错误的原因是,您分配的方法是重复的,而不是属性重复的,因此您正在创建一个无限调用循环,因为该方法试图将自己设置为无限循环,因为它一次又一次地通过setter…