çağrılırken bir Python nesne arama sırasında ben bir sınıf aşağıda görebileceğiniz gibi, bazı parametreler vardır ve nitelikleri Parçacık var aştı. Ancak, fonksiyon için pozisyon belirleyiciye geldiğinde ve copy() fonksiyonunu çalıştırdığında, hata mesajını alırım: RuntimeError: Python nesnesini çağırırken maksimum yineleme derinliği aşıldı. deepcopy() veya import sys sys.setrecursionlimit (10000) gibi farklı seçenekler denedim, ancak bunların hiçbiri işe yaramadı ... Herhangi bir fikri olan var mı? Eğer mülkiyet ve onu destekleyen sıradan öznitelik hem adı olarak position
kullanmaya çalışıyorsanız gibiPython: Maksimum yineleme derinliği kopyalama işlemini
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
Python'un getters ve setter sürümüyle% 100 aşina değilim, ancak programınızdakilerin hiçbir zaman çağrılmadığını söyleyebilirim çünkü bu sınıfın bir nesnesini başlattığınızda yaptığınız ilk şey; 'self.position' bir' listeye 'başvurusu. – TigerhawkT3
@ TigerhawkT3: Hayır, çağrıldılar, tekrar aradılar ve tekrar ... – user2357112
@ user2357112: Lütfen bana yaptığım hatayı söyleyemez misiniz? – Nelly