PythonはPerlなどとは異なり、参照を扱えないことは知っていますが、同じメモリアドレスを参照するため、値がリンクされている単純な変数を作成することは可能ですか?私はリストと辞書の浅いコピーが同じアドレスを参照する値を含んでいることを知っています。Pythonで同じ値を指す2つの変数
>>> foo = 1
>>> bar = foo
>>> bar = 0
>>> foo
1
>>> foo = [1,2]
>>> bar = foo
>>> bar[1] = 0
>>> foo
[0,2]
Cf. Perlの
$ref = 1
$foo = \$ref
$bar = $foo
print $$bar //gives 1
$$foo = 0
print $$bar //gives 0
私はそれはPythonでハッキング/行うことができるかに興味がありますということである理由で。 具体的な例を挙げると、私はクラスに2つの "同義語"属性を与えたかったでしょう。 は、私は1つが第2の値マスキングすることによって(間違った場合はテストされていない、申し訳ありません)このようshenaniganをやってのけることができることとします
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)
をしかし、それは非常に私は好奇心だったものの精神ではありませんが、もしハックは唯一の方法です、私はそれを行って、最善の方法を知りたいです。
の確認here。たとえば、それを唯一の要素としてリストに入れることができます。 '[x]'とし、リストへの参照を使います。あるいは 'dict'に入れたり、' class'を作りました。 –