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

在python中更改函数内的指定实例,python,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(

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

您可以使
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

您在代码中所做的是更改
func(a)
方法中
local
变量
a
的指针。但是,如果要更改
var1
指针,则必须为更改后的
指定一个作为参数传递的
变量。

一种方法是使用一个可编辑对象,如列表和属性函数,它们自动完成所需操作

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)

你的意思是你想要一个物体的照片?首先,谢谢你的回复。但这不是我想要的。可能是因为我没有提到函数不应该返回。这是一个我应该尊重的实现。起初我想这样做,但仍然不起作用。问题是,当您从函数返回时,对象是相同的。(修改应该在函数内部)