我想做类似以下的事情:
class Foo(object):
def __init__(self):
self.member = 10
pass
def factory(foo):
foo = Foo()
aTestFoo = None
factory(aTestFoo)
print aTestFoo.member
但是它崩溃了AttributeError: 'NoneType' object has no attribute 'member'
:对象aTestFoo
没有在函数调用中被修改factory
。
执行此操作的 pythonic 方式是什么?这是要避免的模式吗?如果是当前的错误,它是如何命名的?
在 C++ 中,在函数原型中,我会添加对要在工厂中创建的指针的引用……但也许这不是我在 Python 中应该考虑的事情。
在 C# 中,有一个关键字ref
允许修改引用本身,非常接近 C++ 方式。我不知道 Java ......我确实想知道 Python。