Personally, I'm a fan of having an is_cancelled method the subclass would check. I'm looking at the is_cancelled variable as an implementation detail the subclass shouldn't have to see (or be able to, but maybe it's too Java of me) and instead have a method to invoke.