Forums Neueste Beiträge
 

Weak reference auf bound method

02/10/2009 - 10:50 von Ole Streicher | Report spam
Hallo,

im Zusammenhang mit dem Async-Problem ist mir noch etwas aufgefallen --
"Bound methods" verhalten sich in weakrefs komisch:

class MyClass(object):
def myfunc(self):
pass

o = MyClass()
print o.myfunc




<bound method MyClass.myfunc of <__main__.MyClass object at 0xc675d0>>









import weakref
r = weakref.ref(o.myfunc)
print r()




None









Nanu? Das Objekt "o" gibt es doch noch, und damit auch die passende
bound method "o.myfunc". Die weakref behauptet aber, sie gàbe es nicht
mehr. Wie kann ich erreichen, dass die Referenz erhalten bleibt, solange
"o" lebt?

Viele Grüße

Ole
 

Lesen sie die antworten

#1 Stefan Behnel
02/10/2009 - 13:38 | Warnen spam
Ole Streicher schrieb:
"Bound methods" verhalten sich in weakrefs komisch:

class MyClass(object):
def myfunc(self):
pass

o = MyClass()
print o.myfunc
>>>> <bound method MyClass.myfunc of <__main__.MyClass object at 0xc675d0>>

import weakref
r = weakref.ref(o.myfunc)
print r()
>>>> None



Na ja, das passiert eben, wenn mensch eine Funktion aufruft, die keinen
Rückgabewert hat.

Stefan

Ähnliche fragen