我在python中比较新,但我有一些来自其他语言的包。这是我的问题: 我需要更改函数内的实例引用。此实例作为参数传递。 但我不知道该怎么做。我想我错过了Python基础知识。下面的代码是我想要的例子:
class Foo(object):
def __init__(self,a):
self.a = a
def func(a):
b = Foo(3)
a = b
var1 = Foo(5)
print(var1.a) # 5
func(var1)
print(var1.a) # it display 5 not 3
答案 0 :(得分:1)
您可以func
返回a
,然后将其分配给var1
,如下所示:
def func(a):
b = Foo(3)
a = b
return a
var1 = Foo(5)
print(var1.a) # 5
var1 = func(var1)
print(var1.a) # 3
>>> var1.a
3
您在代码中执行的操作是您正在更改local
方法中a
变量func(a)
的指针。但是,如果要更改var1
指针,则必须将已传递的已更改a
变量指定为参数。
答案 1 :(得分:0)
一种方法是使用一个umutable对象,例如list和属性函数,它们可以自动完成你需要的工作。
class Foo(object):
def __init__(self, value):
self._a = [value]
def __geta(self):
return self._a[0]
def __seta(self, obj):
self._a.insert(0, obj)
self._a.pop(1)
a = property(__geta, __seta)
var1 = Foo(5)
print var1.a
var1.a = 3
print(var1.a)