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