Edited at
PythonDay 5

Pythonのクラスメンバのスコープまとめ

More than 5 years have passed since last update.

Advent CalendarのPythonが過疎気味なので、昨日に引き続き何か簡単なネタを書こうと思います。

以前にまとめたPythonのクラスメンバのスコープまとめ紹介します。

具体的には、パブリックなメンバとメソッド、プライベートなメンバとメソッドの記述方法とアクセス方法です。

# coding: utf-8


class Widget(object):

# コンストラクタ
def __init__(self, r, l):

# 通常メンバ変数
self.rval = r
self.lval = l

# プライベート変数
self.__secret = 5

# publicクラスメンバ変数
classVal = 30

# プライベートクラス変数
# 外からは特別な記述でないとアクセスできない
__SecretClassVal = 10

# 通常メソッド
def Calc(self):
# ここでもメンバ変数を定義できる。
self.top = 10
return self.rval * self.lval * self.top

# プライベートメソッド
def __MyCalc(self):
print "This is Private Method!"

# クラスメソッド.
@classmethod
def SelfName(cls):
# ここでもクラスメンバ変数の定義ができる。
cls.number = 1

# プライベートクラスメソッド.
@classmethod
def __PrivateSelfName(cls):
print "This is Private Class Method!"

if __name__ == '__main__':

# コンストラクタと通常メソッドの呼び出し。
w = Widget(2, 4)

# メンバ変数へのアクセス
w.lval = 3
w.rval = 4

# プライベートメンバ変数にアクセス。
# インスタンス._クラス名__変数名でアクセスできる。(推奨されない)
print w._Widget__secret

# パプリッククラス変数へアクセス。
# インスタンス名でもクラス名でもどちらでもアクセス可能。
print Widget.classVal
print w.classVal

# プライベートクラス変数にアクセス。
# インスタンス._クラス名__変数名でアクセスできる。(推奨されない)
print w._Widget__SecretClassVal

# 通常のメソッドの呼び出し.
print w.Calc()

# プライベートメソッドの呼び出し(推奨されない)
print w._Widget__MyCalc()

# クラスメソッドの呼び出し.
Widget.SelfName()

# プライベートクラスメソッドの呼び出し(推奨されない)
print w._Widget__PrivateSelfName()

 

`

 5

 30

 30

 10

 120

 This is Private Method!

 None

 This is Private Class Method!

 None