Python: Maximale Rekursionstiefe beim Aufrufen eines Python-Objekts beim Aufrufen der Kopierfunktion überschritten

Ich habe ein klassePartike hat einige Parameter und Attribute, wie Sie unten sehen können. Wenn es aber zum Funktionseinsteller für die Position kommt und die copy () - Funktion ausführt, erhalte ich die Fehlermeldung:RuntimeError: Maximale Rekursionstiefe beim Aufrufen eines Python-Objekts überschritten. Ich habe verschiedene Optionen ausprobiert, wie zBdeepcopy (), oderimport sys sys.setrecursionlimit (10000), aber keiner von ihnen hat funktioniert ... Hat jemand eine Idee? Das ist mein Code:

def initCost(n):
    a = random.randint(0,10)              #gram.
    b = random.randint(0,5)             #price
    return [random.randint(0,a*b) for i in range(n)]

costs = initCost(10)

class Particle:
    def __init__(self, n, maxWeight):
        self.position = [random.randint(0,1) for i in range(n)]  #position
        self.velocity = [0 for i in range(n)]                    #velocity
        #self.fit = self.fitness(self.position)
        self.bp = self.position.copy()                           #best position
        self.bf = self.fit                                 #best fitness
        self.evaluate()

    def fit(self, x):
        fitt = 0
        for i in range(len(x)-1):
            if (x[i] == 1):
                fitt = fitt + costs[i]
        return fitt

    def evaluate(self):
        """ evaluates the particle """
        self.fitness = self.fit(self.position)

    @property
    def position(self):
        return self.position

    @property
    def bp(self):
        return self.bp

    @property
    def bf(self):
        return self.bf

    @position.setter
    def position(self, newPosition):
        self.position = newPosition.copy()
        #self.position = newPosition[:]
        self.evaluate()
        # automatic update of particle's memory
        if (self.fit<self.bf):
            self.bp = self.position
            self.bf  = self.fit

Antworten auf die Frage(2)

Ihre Antwort auf die Frage