プライベートメンバ
クラスのメンバー変数はデフォルトでは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変数のようにして派生クラスからアクセスすることができます。