クラス内からしか呼び出さないメソッドを明示する方法はないでしょうか?


Python 3.4.3を利用しています。

モジュールを自作する中でクラスのインスタンスメソッドの共通の処理を切り出して、他のインスタンスメソッドにしているのですが、後者のインスタンスメソッドは前述のインスタンスメソッド以外に呼び出されないようにしたいです(あるいは、コードを見たときに前述のインスタンスメソッドにしか使わないことがわかるようにしたい)

[code]

    class testclass:
        def __init__(self):
            pass
    
        def get_power_two(self, number):  # 2のnumber乗を返す
            answer = 1
            for i in range(0, number):
                answer = self.twice(answer)
            return answer
    
        def twice(self, answer):  # get_power_two以外からは呼び出されない
            return 2*answer
    
    A = testclass()
    print(A.get_power_two(4))  # 16
    A.twice(2)  # これがエラーになってほしい
    
[/code]

上記のコードでは、`get_power_two()`の処理の一部を`twice()`というインスタンスメソッドに切り出していますが、これは`A.twice(2)`と呼び出せてしまいます。
このメソッドが、同じクラス内のメソッド以外から呼び出されない、あるいは呼び出されるべきでないことを明らかにしたいのですが、うまい方法はないでしょうか?  
よろしくお願いします。




メソッド名を `_twice` にしましょう。  
Pythonでは、外から使って欲しくないことを表明するために `_` を付けます。  
それを無視して使われる可能性はありますが、それは使う方の責任ですね。

`__` を付ける方法もありますが、不自由になりすぎるのでお勧めしません。

