It's easy to get hooked on inheritance, but inheritance can become incredibly brittle when you go beyond a level or two of subclassing.
It also increases the documentation burden, because the application logic tends to be implicit in your choice of class hierarchies and responsibilities. So you're going to be writing a lot of ER diagrams in addition to api-docs.
We get a hint of these problems in the OpenACS's somewhat-OOpy permissions system. For example, it's not uncommon to run into subtle, hard to debug side effects resulting from small but significant changes to objects that have numerous descendants in various parts of the permission hierachy. I've personally worked on a couple of problems like this. Here's a writeup of one of them:
So these days I'm not too big on OOP, at least not for marketing reasons. I think it's great for GUI apps, and at least won't make your life worse if used expertly, but by and large isn't such a great fit on the server side.