在Java中,您可以使用匿名内部类内联定义一个新类。当您只需要重写类的单个方法时,这很有用。

假设您要创建OptionParser的子类,该子类仅覆盖单个方法(例如exit())。在Java中,您可以编写如下代码:

new OptionParser () {

    public void exit() {
        // body of the method
    }
};

这段代码创建了一个匿名类,该类扩展了OptionParser并仅覆盖exit()方法。

Python中有类似的习语吗?在这些情况下使用哪种习语?

最佳答案

您可以使用 type(name, bases, dict) 内置函数即时创建类。例如:

op = type("MyOptionParser", (OptionParser,object), {"foo": lambda self: "foo" })
op().foo()

由于OptionParser不是新型类,因此必须在基类列表中显式包括object

07-24 09:24