【发布时间】:2013-03-25 07:18:42
【问题描述】:
好的,这次我会尽量说清楚。
class Yes:
def __init__(self):
self.a=1
def yes(self):
if self.a==1:
print "Yes"
else:
print "No, but yes"
class No(Yes):
def no(self):
if self.a==1:
print "No"
else:
print "Yes, but no"
self.a-=1 #Note this line
现在,在运行时:
Yes().yes()
No().no()
Yes().yes()
No().no()
我希望它打印出来:
Yes
No
No, but yes
Yes, but no
它给了我:
Yes
No
Yes
No
现在,我知道原因是因为我只是在 No 类中更改 Self.a 的值(还记得那行吗?)。我想知道是否有任何方法可以在 Yes 类中更改它,而仍在 No 类中(例如,如果我可以插入一些东西来代替 self.a-=1 可以工作)。
【问题讨论】:
-
可以在类中写一个setter方法,从其他类调用
-
我试过了,一直回调self.a=1
-
@MichalČihař 特别是this answer 触及了问题的核心:您不能通过
self设置类变量。您必须改用类名。混乱来自能够通过self获取一个类变量。