Class
1. basic
- クラス名はCamelCaseで記載する
- インストラクタは
def __init__(self,[変数名]):で記述する ←後ろの__をよく忘れるので注意 - デストラクタは
def __del__(self):で記述する - メソッドの第一引数は
selfが必須(呼び出し時は第一引数は設定不要) ←よく忘れるので注意 - メンバ変数の第一引数は
selfが必須 ←よく忘れるので注意 - クラス内からメンバ変数やメソッドにアクセスする場合には、
self.をつける ←よく忘れるので注意 - pythonには厳密なprivate変数は存在しない そのため、下記のどちらかのルールで明示的に記載する
- 変数名の先頭にアンダースコアを1つつける
- 変数名の先頭にアンダースコアを2つつける(ネームマングリングされるため)
python ソースコード
class MyClass(object):
# コンストラクタ
def __init__(self,num=1):
# メンバ変数
self._num = num
# デストラクタ
def __del__(self):
print("finish")
# メソッド
def output(self):
self.doubleoutput()
def doubleoutput(self):
print(self._num * 2)
#------------------------
myclass1 = MyClass(10)
myclass1.output()
myclass2 = MyClass()
myclass2.output()
2. 何も書かない場合
- passを指定するとメンバ変数・メソッド・コンストラクタ等を記述しないクラスを作成出来る
3. クラス変数
- 全クラスで共有することが可能なメンバ変数
4. settrt/getter
- インスタンス変数を外部に公開する際に、使用すると便利な機能
- getter関数の上に
@propertyを記述する - 外部からアクセスする際には、
インスタンス変数名.getterメソッド名でアクセスする - setter関数の上に
@setter関数名.setterを記述する
python ソースコード
class MyClass(object):
def __init__(self):
self.__num = 1
@property
def num(self):
return self.__num
@num.setter
def num(self,num):
self.__num = num
myclass = MyClass()
print(myclass.num)
^^^^^^^^^^^★getter関数のアクセス
myclass.num = 100
print(myclass.num)