当我调用changeColor
方法时,我想永久地更改View
类中属性pen_color
的值,并且该值仍然是永久的,除非我用另一种颜色再次调用该方法,当我调用changeColor
方法时,pen_color
属性仍然具有相同的值,我不想要这样的东西有没有办法做这样的事?
class View:
def __init__(self):
self.pen_color = 'red'
class Button(View):
def __init__(self):
pass
def changeColor(self):
super().__init__()
self.pen_color = 'green'
您应该将笔颜色的声明移动到类属性而不是实例属性中,并将其引用为View.pen_color
。
完成此操作后,View.pen_color
将是永久的和全局的,但可以在View或Button实例中被self.pen_color
遮蔽。
这不是最佳实践,但如果你真的想这样做,那么你可以这样做。要做到这一点,需要制作一个函数来设置超类'__init__()
中的初始颜色,然后稍后更改该函数。下面是一个示例:
class View:
def __init__(self):
self.initColor()
def initColor(self):
self.pen_color = 'red'
class Button(View):
def __init__(self):
super().__init__()
def changeColor(self, color):
def newColor(self):
self.pen_color = color
View.initColor = newColor
btn = Button()
print(btn.pen_color) # returns 'red'
btn.changeColor('green')
btn2 = Button()
print(btn2.pen_color) # returns 'green'