Python class 属性赋值
Python class attribute assignment
我是 Python 的新手,我想知道为什么我无法使用函数更改 class 实例的属性,如果我将实例作为函数参数传递
例如,如果我有:
class sol:
def __init__(self):
self.val = 0
def fun1(obj, attrib):
obj[attrib] = 1
newSol = sol()
fun1(newSol, "val")
为什么 fun1 不能更改对象属性?有没有办法改变它,或者 "val" 属性是不可变的?
Python class 实例和 dict
是完全不同的野兽;您可能来自 JavaScript 背景,其中 obj.foo
等同于 obj["foo"]
,但这不是 Python 的工作方式。
如果您想通过 str
名称设置属性,use setattr
:
def fun1(obj, attrib):
setattr(obj, attrib, 1)
我是 Python 的新手,我想知道为什么我无法使用函数更改 class 实例的属性,如果我将实例作为函数参数传递 例如,如果我有:
class sol:
def __init__(self):
self.val = 0
def fun1(obj, attrib):
obj[attrib] = 1
newSol = sol()
fun1(newSol, "val")
为什么 fun1 不能更改对象属性?有没有办法改变它,或者 "val" 属性是不可变的?
Python class 实例和 dict
是完全不同的野兽;您可能来自 JavaScript 背景,其中 obj.foo
等同于 obj["foo"]
,但这不是 Python 的工作方式。
如果您想通过 str
名称设置属性,use setattr
:
def fun1(obj, attrib):
setattr(obj, attrib, 1)