Допустим, я создаю собственный класс Button с именем MyButton.Я хочу, чтобы все созданные кнопки MyButton воспроизводили одинаковый звук при нажатии.Но я также хочу добавить различные функции для определенных кнопок, например, я хочу, чтобы некоторые кнопки меняли текст надписи, но я также хочу, чтобы они воспроизводили этот звук.Есть ли способ сделать это с наследованием, поэтому мне не нужно помнить, что я должен добавить функциональность воспроизведения звука к каждой создаваемой кнопке?
РЕДАКТИРОВАТЬ: допустим, у меня есть класс MyButton, объявленный ниже:
class MyButton(Button):
def generic_function_for_all_buttons(self):
print('GENERIC FUNCTION')
теперь, когда я пытаюсь создать MyButton где-нибудь еще в коде, подобном этому:
class TestClass(BoxLayout):
def __init__(**kwargs):
self.buttons = []
self.set_layout()
def button_action(self,button):
button.generic_function_for_all_buttons()
print(button.text)
def set_layout(self):
for i in range(0,100):
button = MyButton(text=i)
button.on_press = functools.partial(button_action, button)
self.buttons.append(button)
self.add_widget(button)
Это не исполняемый код, просто демонстрация того, чего я хочу достичь,Теперь каждый раз, когда я нажимаю MyButton из TestClass, он печатает ОБЩУЮ ФУНКЦИЮ и число от 0 до 99 в зависимости от того, какая кнопка была нажата.Но мне пришлось добавить строку button.generic_function_for_all_buttons (), и я хочу избежать ее, если это возможно.Если у каждой из 100 кнопок было свое собственное действие, подобное этому:
def action_1(self,button):
button.generic_function_for_all_buttons()
print('1')
def action_2(self,button):
button.generic_function_for_all_buttons()
print('2')
def action_3(self,button):
button.generic_function_for_all_buttons()
print('3')
...
Эта button.generic_function_for_all_buttons () - это 100 строк кода, которых я хочу избежать.Я думал, что это должно быть как-то возможно с наследованием, например, я добавляю метод on_press в класс MyButton следующим образом:
class MyButton(Button):
def on_press(self):
print('GENERIC FUNCTION')
, но тогда он просто игнорирует его.