在python中更改函数内的指定实例
我是python的新手,但我有一些其他语言的包。我的问题是: 我需要更改函数内的实例引用。此实例作为参数传递。 但我不知道怎么做。我想我错过了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(
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)
你的意思是你想要一个物体的照片?首先,谢谢你的回复。但这不是我想要的。可能是因为我没有提到函数不应该返回。这是一个我应该尊重的实现。起初我想这样做,但仍然不起作用。问题是,当您从函数返回时,对象是相同的。(修改应该在函数内部)