gpt4 book ai didi

python - 通过引用传递给 python 中的类的参数(la C++),用类方法修改它

转载 作者:太空狗 更新时间:2023-10-30 02:10:40 24 4
gpt4 key购买 nike

在这种情况下,我希望程序打印“X = changed”

class Clase:
def __init__(self,variable):
self.var = variable
def set_var(self):
self.var = 'changed'

X = 'unchanged'
V = Clase(X)
V.set_var()

print "X = ",X

最佳答案

所有值都是对象,在 Python 中通过引用传递,赋值会更改引用。

def myfunc(y):
y = 13

x = 42 # x now points at the integer object, 42
myfunc(y) # inside myfunc, y initially points to 42,
# but myfunc changes its y to point to a
# different object, 13
print(x) # prints 42, since changing y inside myfunc
# does not change any other variable

重要的是要注意这里没有其他语言中的“简单类型”。在 Python 中,整数是对象。 float 是对象。 bool 是对象。并且赋值总是改变指针以引用不同的对象,无论该对象的类型如何。

因此,不可能通过引用“赋值”并更改其他人的变量。但是,您可以通过传递可变容器(例如列表或字典)并更改容器的内容来模拟这一点,正如其他人所展示的那样。

这种通过指针改变参数的方式在 C/C++ 中很常见,通常用于解决函数只能有一个返回值的问题。 Python 会很乐意在 return 语句中为您创建元组,并在另一侧将它们解包为多个变量,从而轻松返回多个值,因此这不是问题。只需返回您要返回的所有值。这是一个简单的例子:

def myfunc(x, y, z):
return x * 2, y + 5, z - 3

另一边:

a, b, c = myFunc(4, 5, 6)

那么在实践中,几乎没有任何理由需要用 Python 来做您想做的事情。

关于python - 通过引用传递给 python 中的类的参数(la C++),用类方法修改它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28375892/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com