The methods themselves are not abstract and such they aren't required to be overloaded (for example _smtp.py_ has no _execActionUnban_). The subclass hook checks that a python class has all the necessary methods, without requiring to actually inherit from the ActionBase. I was thinking that someone may want to import some sort of class, maybe from an external library, which may not want to rely on fail2ban; basically trying to keep use of external python flexible.