存在しないメンバを参照しようとするとAttributeError例外が出るので、単にそれを受け取って代替の関数で上書きしちゃえばいい。
try: get_major=os.major get_minor=os.major except AttributeError: def get_major(x): return x/0x100 def get_minor(x): return x%0x100 os.major=get_major os.minor=get_minor
os.majorとos.minorはPython2.3から入った。2.2ではexceptの中が実行される。中身は、たぶん妥当に動く場合が多いと思うけど、もちろん保証の限りではない。
ここで軽い注意。
def os.major(x): return x/0x100
と直接書くことはできない(まあ、書かないとは思うけど)。
モジュールの関数の場合はmodule.func()で呼んでも第1引数はselfにならないようだ。クラスの場合はいわゆるC++でもおなじみの暗黙の第1引数ということでobj.func()は第1引数がobj(いわゆるthisとかselfとか呼ばれるモノ)になるのだが。で、classの中にクラスの外で定義したfuncを押し込むときは、引数にselfを書けばいい。
ちなみに(関係ないが)Pythonではselfは予約語ではない。