Objekt loeschen


FingerSkill

Erfahrenes Mitglied

Ich
habe jetzt schon einiges ausprobiert, am liebsten waere mir wenn sich
das objekt selbst loescht ala:

Code:
class entity(object):
    def __init__(self, (lifetime), hunger):
        self.__death = randint(lifetime[0], lifetime[1])
        self.__hunger = hunger
        self.__age = 0
    def __del__(self):
        print "deleted"
    def nextYear(self):
        self.__age += 1
        if self.__death < 0:
            del self #funktioniert aber leider nicht
        else:
            self.__death -= 1
    def isDeath(self):
        if self.__death < 0:
            return True
        else:
            return False
    def printInfo(self):
        print "is ", self.__age, "years old and",
        print "dies in: ", self.__death, "years"
Das funktioniert aber leider nicht.

Zur zeit schaut darum mein Schnipsel folgender massen aus:
Code:
class entity(object):
    def __init__(self, (lifetime), hunger):
        self.__death = randint(lifetime[0], lifetime[1])
        self.__hunger = hunger
        self.__age = 0
    def __del__(self):
        print "deleted"
    def nextYear(self):
        self.__age += 1
        self.__death -= 1
    def isDeath(self):
        if self.__death < 0:
            return True
        else:
            return False
    def printInfo(self):
        print "is ", self.__age, "years old and",
        print "dies in: ", self.__death, "years"

class population(object):
    def __init__(self, startpop, (lifetime), hunger):
        self.pop = []
        for i in range(0, startpop):
            self.pop.append(entity((lifetime), hunger))
    def nextYear(self):
        for x in self.pop[:]:
            if x.isDeath():
                del x
            else:
                x.nextYear()
    def getSize(self):
        return len(self.pop)
    def printInfo(self):
        print "Population:", len(self.pop)
        for item in self.pop:
            item.printInfo()

beeing = population(20, (20, 40), 0.3)
round = 0
beeing.printInfo
while beeing:
    print "round: ", round
    round += 1
    beeing.nextYear()
    beeing.printInfo()
Beschreibung:
Die Klasse entity ist z.b. ein Lebewesen einer Spezies (population),
wenn bei einem Objekt der Klasse entity das Attribut __death unter 0
sinkt soll sich das Objekt loeschen. Entweder es loescht sich selst,
aber das ist soweit ich in erfahrung gebracht habe in python unmoeglich.
Oder es wird von der Klasse population geloescht, aber da bekam ich je
nach Idee und Umsetzung immer wieder Probleme....
 
Zuletzt bearbeitet: