关于python:类上的最大递归深度

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…