プライベートメンバ


クラスのメンバー変数はデフォルトではpublicです。プライベートにするには変数の前に__(2つの連続した下線)を付けます。次のサンプルは「コンストラクタ」のサンプルを改良して、点の座標(x, y)をプライベートにしたものです。

# class Point

class Point :
    __x = 0.0
    __y = 0.0
    def __init__(self, x1, y1) :
        self.__x = x1
        self.__y = y1
    def toString(self) :
        return '(' + str(self.__x) + ', ' + str(self.__y) + ')'

p1 = Point(-1.0, 1.0)
print p1.toString()

この例で__xは外部からは見えないのでprint p1.__xとしてもエラーになります。

実は、__xは_Point__xと言う名前に変換されています。よって、

print p1._Point__x

とすればアクセスできます。このことを利用すれば、protected変数のようにして派生クラスからアクセスすることができます。