Destroy Objektmethode nach erstem Aufruf

Ich habe die Antwort darauf bereits herausgefunden, daher stelle ich sie hier als eine Frage an mich selbst - für diejenigen, die möglicherweise eine ähnliche Frage haben.

rundsätzlich wollte ich eine Objektmethode löschen können. Der Grund

Ich habe eine Aktion, die einmal pro Objektlebensdauer ausgeführt werden muss. Diese Aktion kann nicht im @ platziert werd__drin_ Methode, da ich das System vollständig initialisieren muss, bevor es ausgeführt wird.

Ich habe einen geeigneten Platzhalter für diese Aktion - eine in der übergeordneten Klasse vorhandene Methode. Ich möchte jedoch vermeiden können, die Bedingung jedes Mal zu überprüfen, wenn die Methode vom Framework aufgerufen wird.

So versuchte ich diesen Ansatz:

In [193]: class Parent(object):
        def place_for_action(self):
           print 'This is parent'
       .....:        

In [194]: class Child(Parent):
    def place_for_action(self):
        super(Child, self).place_for_action()
        print 'This is child'
        delattr(self, 'place_for_action')
   .....:         ,

Wenn ich es ausprobiert habe, habe ich versagt

In [186]: c= Child()

In [187]: c.place_for_action()
This is child
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
/homes/markg/<ipython-input-187-da53ac96ffa9> in <module>()
----> 1 c.place_for_action()

/homes/markg/<ipython-input-185-7037db53bd87> in do_once(self)
      2     def place_for_action(self):
      3         print 'This is child'
----> 4         delattr(self, 'place_for_action')
      5 

AttributeError: 'Child' object attribute 'place_for_action' is read-only

Antworten auf die Frage(1)

Ihre Antwort auf die Frage