Ich weiß Python funktioniert nicht mit Referenzen, im Gegensatz zu Perl und anderen, aber ist es möglich, eine einfache Variable, deren Werte verknüpft sind, da sie die gleiche Speicheradresse verweisen? Ich weiß, dass flache Kopien von Listen und Wörterbüchern Werte enthalten, die auf dieselbe Adresse verweisen.Zeigen Sie zwei Variablen auf den gleichen Wert in Python
>>> foo = 1
>>> bar = foo
>>> bar = 0
>>> foo
1
>>> foo = [1,2]
>>> bar = foo
>>> bar[1] = 0
>>> foo
[0,2]
Cf. in Perl
$ref = 1
$foo = \$ref
$bar = $foo
print $$bar //gives 1
$$foo = 0
print $$bar //gives 0
Der Grund dafür ist, dass ich bin gespannt, wie könnte es in Python getan/gehackt werden. Um ein konkretes Beispiel zu geben, hätte ich gern einer Klasse zwei "synonyme" Attribute gegeben. Ich nehme an, dass man so (ungetestet, sorry, wenn falsch) durch den zweiten Wert Maskieren ein shenanigan abziehen könnte:
class fake:
def __init__(self,template):
self.ref = template # keep alive
self.__dict___ = template.__dict__
self.__class___ = template.__class__
def __getitem__(self):
return self.ref.__getitem__
def __setitem__(self,value):
self.ref.__setitem__(value)
Aber das ist nicht ganz im Geist, was ich war neugierig, aber wenn ein Hack ist der einzige Weg, ich werde dafür gehen und würde gerne den besten Weg kennen.
In Python Sie den Wert in einem Objekt speichern würde, die Sie verweisen können. Zum Beispiel könnten Sie es in eine Liste als das einzige Element, z.B. '[x]', dann verwenden Sie Verweise auf die Liste. Oder Sie könnten es in ein 'dict' setzen oder eine' Klasse' dafür erstellen. –