うん、よく考えたらダウンキャストじゃないですね。あと、上の例はちょっと足りませんでした。
クラス B は、追加のデータはなく、

class B(A):
 def X(self):
  return '[' + A.X(self) + ']'

 def QuotedX(self):
  return '"' + self.X() + '"'

といった感じです。要するに、インターフェースを換えずに振る舞いを換えたり
新たなインターフェースを追加したいと言うことです。そういうことをしたければ
委譲したり、動的にメソッドを追加・オーバーライドすればすればすむ話ですが、
面倒なのでw、A を B と思って B のメソッドを呼ぶ様な横着はできないかと思った次第です。