我想创建一个值为“x.val”的类属性(名为“v”) 其中x是类的属性值。在
我设计如下代码。。。但当我给属性“v”赋值时,它就不起作用了, “x.val”的值不变。在
首先,我创建了一个新的object PClass,此时v属性和“x.val”具有相同的值1,即“x.val”
我给“v”赋值9999。“v.val”的预期值将更改为9999 但事实并非如此。“v”的值更改为9999,但“v.val”仍为1。 此外,似乎函数“setv”从未到达过。
我不知道为什么会发生这种事?任何理想,请告诉我!在
谢谢大家!在
class ValClass:
def __init__(self):
self.val = 1
self.var = 2
def pr(self):
print "==== PR ===="
print self.val #1
print self.var #2
class PClass:
x = ValClass()
y = '1'
def getv(self):
return self.x.val
def setv(self, val):
self.x.val = val
def delv(self):
del self.x.val
v = property(getv, setv, delv)
def solv(self):
print self.v #9999
self.x.pr()
if __name__ == '__main__':
p = PClass()
p.v = 9999
print p.v
p.solv()
未调用
setv
,请将class PClass:
更改为class PClass(object):
,使PClass成为object的子类property
只能用于新样式的类。如果您的类不是从object
继承的,它就不能实现属性!在相关问题 更多 >
编程相关推荐