初级Python类
我现在有这样一个代码,如果按下ToggleButton,我希望它说初级Python类,python,class,button,Python,Class,Button,我现在有这样一个代码,如果按下ToggleButton,我希望它说 ToggleButton was pressed 然后说明ToggleButton是开还是关(默认情况下,它是开的,如果按下按钮,它将关闭)。我想通过状态为真或假来实现这一点,但我不确定如何实现。 任何帮助都将不胜感激 class Button(object): def __init__(self, text = "button"): self.label = text def press(
ToggleButton was pressed
然后说明ToggleButton是开还是关(默认情况下,它是开的,如果按下按钮,它将关闭)。我想通过状态为真或假来实现这一点,但我不确定如何实现。
任何帮助都将不胜感激
class Button(object):
def __init__(self, text = "button"):
self.label = text
def press(self):
print("{0} was pressed".format(self.label))
class ToggleButton(Button):
def __init__(self, text="ToggleButton", state=True):
self.label = text
比如我想要
b = ToggleButton()
b.press()
返回:
ToggleButton was pressed
ToggleButton is now OFF
谢谢 只需添加一个
self.state
变量:
class ToggleButton(Button):
def __init__(self, text="ToggleButton", state=True):
super(ToggleButton, self).__init__(text)
self.state = state
def press(self):
super(ToggleButton, self).press()
self.state = not self.state
print('ToggleButton is now', 'ON' if self.state else 'OFF')
我认为其他的答案还没有完全回答你的问题,所以我来试一试。您已经很好地设置了类层次结构;现在需要做的是覆盖
按
方法来处理新数据(切换当前状态)。这很简单!考虑下面的类:
class ToggleButton(Button):
def __init__(self, text="ToggleButton", state=True):
self.label = text
self.state = state
def press(self):
# Call the superclass press() method
# Note that pre-Python 3, the call needs to be super(ToggleButton,self)
super().press()
# Toggle state
self.state = not self.state
# Print current state
print('{0} is now {1}'.format(self.label,'ON' if self.state else 'OFF'))
新的press
方法只做三件事:
- 首先,它调用超类的
方法(press
)。这可以防止您必须复制代码以打印“Button was pressed”(按钮已按下),或者您可能最终放入基本按钮
类中的任何其他代码李>按钮
- 其次,它切换当前状态。这部分不需要太多解释李>
- 最后,它打印出一条关于按钮新状态的消息