クラスについて
クラスの作り方
class Classname: statement
クラスからインスタンスを作る
variable = Classname()
#Classnameの引数がある場合もある
初期化メソッド
def __init__(self,argv1,argv2,argv3...):#なお、このselfはインスタンス自身を表す # 初期化処理 # インスタンス変数の初期化 self.variable = variable
インスタンスからインスタンス変数を呼び出す
variable.インスタンス変数名
インスタンス変数の更新
variable.インスタンス変数名 = 値
インスタンスメソッドの定義
def methodname(self,argv1,argv2,argv3...): statement
インスタンスメソッドの呼び出し、実行
variable.インスタンスメソッド名()
クラスはインスタンス変数とインスタンスメソッドの他に、クラス変数とクラスメソッドを持つことができる。
クラス変数の初期化をする
variable = 初期値
クラス変数を呼び出す
classname.variable
クラスメソッドを定義する
インスタンスメソッドを定義するのとほぼ同じだが、二点違いがある。
1.def methodnameの前に「@classmethod」を付ける
2.関数の引数をselfではなく「cls」となる
@classmethod def methodname(cls,argv1,argv2,argv3,,,,): statement
クラスメソッド内で変数を宣言する際に注意する点は
cls.variable =初期値
とcls.variableを忘れないこと
クラスメソッドの実行
classname.methodname()
定義後のクラスに後から変数を(動的に)追加する
classname.variable = 初期値
定義後のクラスに後からメソッドを(動的に)追加する
1.追加したいメソッドを定義する
2.その際、クラスメソッドではあれど、引数にclsはいらない
3.追加したいメソッドを代入する(詳細は下記)
まず、helloメソッドを追加したいとする
def hello(msg="こんにちは"): print(msg)
定義したメソッドを、クラス名.定義したいメソッド名に代入する
classname.methodname = hello
メソッドを呼び出す
classname.methodname()
インスタンス変数を動的に追加する
まずクラスからインスタンスを作る
obj = Something()
インスタンスに、インスタンス変数を追加する
obj.a = 123
インスタンスメソッドを動的に追加する
まずクラスからインスタンスを作る
obj = Something()
追加したいインスタンスメソッドを定義する
def music(sound = "boo"): print(sound)
定義したインスタンスメソッドをインスタンスに代入する(詳細は下記)
obj.追加したいメソッド名 = music
インスタンスメソッドを呼び出す
obj.追加したメソッド名()
追加したメソッドや変数を削除する
インスタンス名.methodname = None インスタンス名.variable = None del classname.variable
Noneやdelでメソッドや変数を削除するとメモリが解放される