Python e passagem de referência. Limitação?
Eu gostaria de fazer algo como o seguinte:
class Foo(object):
def __init__(self):
self.member = 10
pass
def factory(foo):
foo = Foo()
aTestFoo = None
factory(aTestFoo)
print aTestFoo.member
No entanto, ele cai comAttributeError: 'NoneType' object has no attribute 'member'
: o objetoaTestFoo
não foi modificado dentro da chamada da funçãofactory
.
Qual é a maneira pythonic de realizar isso? É um padrão para evitar? Se é um erro atual, como é chamado?
Em C ++, no protótipo de função, eu teria adicionado uma referência ao ponteiro a ser criado na fábrica ... mas talvez esse não seja o tipo de coisa que eu deva pensar em Python.
Em C #, há a palavra chaveref
que permite modificar a referência em si, muito perto do caminho do C ++. Eu não sei em Java ... e eu me pergunto em Python.