在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
。