Python 类中的传递值赋值
我觉得这事儿不太好办,但我想说的是:
假设你有一个简单的类,像这样:
class Demo:
a = 'to update'
b = a
你可以看到,我想让变量 'b' 成为变量 'a' 的另一个名字。所以,我想做的事情是这样的:
>>> demo = Demo()
>>> demo.a
'to update'
>>> demo.b
'to update'
>>> demo.b = 'updated'
>>> demo.b
'updated'
>>> demo.a
'updated'
这就是我想实现的一个例子。我想要的是,当我给变量 'b' 设置一个值时,变量 'a' 也能自动得到这个值。我最初的想法是让这两个变量都指向同一个实际值,这样它们就指向同一个元素了。
有什么想法吗?非常感谢任何回答的人!
补充:这个值必须是字符串。
2 个回答
3
这里有一个选择。
class Test(object):
ab = "Original"
def getval(self):
return self.ab
def setval(self, val):
self.ab = val
a = property(getval, setval)
b = property(getval, setval)
t = Test()
print t.a, t.b
t.a = "Hello"
print t.a, t.b
输出结果是,
Original Original
Hello Hello
8
你不能通过赋值来实现你想要的效果。你说得对,你需要把 a 和 b 设置为同一个可变对象,并且要改成一种可以改变这个对象的赋值方式。
class Demo:
a = ['to update']
b = a
>>> demo = Demo()
>>> demo.a[0]
'to update'
>>> demo.b[0]
'to update'
>>> demo.b[0] = 'updated'
>>> demo.b[0]
'updated'
>>> demo.a[0]
'updated'
你也可以使用属性来达到同样的效果,不过 a 和 b 会变成实例属性,而不是类属性:
class Demo(object):
def __init__(self):
self._shared = None
@property
def a(self):
return self._shared
@a.setter
def a(self, value):
self._shared = value
@property
def b(self):
return self._shared
@b.setter
def b(self, value):
self._shared = value