In Java you can define a new class inline using anonymous inner classes. This is useful when you need to rewrite only a single method of the class.
Suppose that you want create a subclass of OptionParser
that overrides only a single method (for example exit()
). In Java you can write something like this:
new OptionParser () { public void exit() { // body of the method } };
This piece of code creates a anonymous class that extends OptionParser
and override only the exit()
method.
There is a similar idiom in Python? Which idiom is used in these circumstances?
Python does not have anonymous functions, but they have dictionaries, and they work just as well.
Inner or Nested classes are not the most commonly used feature in Python. But, it can be a good feature to implement code. The code is straightforward to organize when you use the inner or nested classes.
Yes, we can use a method on an object without assigning it to any reference.
In Java, a class can contain another class known as nested class. It's possible to create a nested class without giving any name. A nested class that doesn't have any name is known as an anonymous class. An anonymous class must be defined inside another class. Hence, it is also known as an anonymous inner class.
You can use the type(name, bases, dict)
builtin function to create classes on the fly. For example:
op = type("MyOptionParser", (OptionParser,object), {"foo": lambda self: "foo" }) op().foo()
Since OptionParser isn't a new-style class, you have to explicitly include object
in the list of base classes.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With