2017-07-11 3 views
0

Python 3.6Python transparent schwach Referenzierung

Wie würde ich mich über ein 'transparentes' weakref.ref zu schaffen.

Also muss ich nicht die __call__() Methode verwenden?

kann ich nur y.value

class integer(): 
    def __init__(self,value): 
     self.value = value 

x = integer(5) 
y = weakref.ref(x) 

print(y.__call__().value) 

Ausgang:

5 
+0

Sie sollten '__call__' nicht explizit verwenden; es ist nur 'y(). value'. Sie können "y.value" mit einem 'weakref.proxy' erhalten (wie Sie es bei der Überprüfung der Dokumente gesehen hätten), aber verwenden Sie diese nicht, da es viel einfacher ist, diese zu verwechseln. – user2357112

+0

@ user2357112 - wie denkst du, dass ich über das 'weakref'-Modul herausgefunden habe? –

+0

Danke, das scheint die einfachste Option zu sein. Ich möchte verschiedene "Ansichten" einer großen Datenmenge erstellen. Die Verwendung eines Proxy-Objekts klingt perfekt! –

Antwort

0

Sie würden verwenden:

class integer(): 
    def __init__(self,value): 
     self.value = value 

x = integer(5) 
y = weakref.proxy(x) 

print(y.value) 

Ausgänge:

5