在python中的函数内更改指向的实例

时间:2014-03-26 13:54:11

标签: python

我在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

2 个答案:

答案 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)