一个关于简化类的创建的问题

前提:用的语言是Python,但是我也想知道Java和c++怎么处理相同的问题。
我创建了一个按钮类,用来构建按钮。这个类有三个方法,分别是__init__,负责构造函数.。click,负责处理点击事件,它会播放特效,然后调用event。event,负责处理点击的效果。
但我发现每种按钮效果都不一样,我就只好多创建几个类,像开始按钮类,下一关按钮类,暂停按钮类等,然后让它们都继承按钮类,分别重写event方法。但这样导致我多写了好多类,而且这些类绝大部分都只有一个实例,我觉得这样很浪费。
有什么方法可以简化吗?

在java、c++里,这类代码通常是写在按钮事件的回调函数里面的
而回调函数直接写在窗体类里面,不会单独为了几句代码封装一个类出来
作为一个按钮,最重要的作用就是当点下的时候能够触发一个事件执行,而到底执行什么应该是基于委托,交由外部来实现的,而不是写死在按钮里面
python做这个要比java方便,python不需要委托,它的变量就可以直接保存函数
你完全可以在创建按钮的时候将要执行的函数作为参数传递进去,然后按钮按下时就直接执行这个函数

class button:
    def __init__(self,func):
        self.func=func  # 实例化时先把传进来的函数保存住,别弄丢了
    def click(self):
        self.func()  # 直接执行这个函数

def button_click():
    ...   #do something
b=button(button_click)

如果你想一个按钮能够响应多个事件,那就不要这样初始化时只传递一个函数
而是定义一个self.onclick=[]
那么当你需要执行什么函数,就b.onclick+=[func],就把函数加进列表里了,那么click的时候遍历一下onclick执行就好

咋没有代码呢