それは本当にあなたが「参照」によって何を意味するかに依存します。...そしてそれはあなたが参照で何をしようとしているのかにも依存します。例えば。
class Test(object):
def __init__(self):
self.__observers = {'event1': {'test':'this'}, 'event2': {'test':'that'}}
def get_observers(self):
return self.__observers
def my_function(self, event):
observer_ref = self.__observers[event]
return observer_ref
if __name__ == '__main__':
t = Test()
my_event = 'event1'
print('From class: {}'.format(t.get_observers()[my_event]))
my_ref = t.my_function(my_event)
print('From my_function: {}'.format(my_ref))
my_ref['something'] = 'else'
print('From my_function after addition: {}'.format(my_ref))
print('From class after addition: {}'.format(t.get_observers()[my_event]))
my_ref = 'something else entirely'
print('From my_function after re-assignment: {}'.format(my_ref))
print('From class after re-assignment: {}'.format(t.get_observers()[my_event]))
結果:
From class: {'test': 'this'}
From my_function: {'test': 'this'}
From my_function after addition: {'test': 'this', 'something': 'else'}
From class after addition: {'test': 'this', 'something': 'else'}
From my_function after re-assignment: something else entirely
From class after re-assignment: {'test': 'this', 'something': 'else'}
基本的に、reference
ある種のオブジェクトに対するものである場合は、その参照を使用してそのオブジェクトを操作できます。参照の名前を他の何かに再割り当てして、参照をプルした元のオブジェクトに反映させることはできません。