py-py’s blog

何か書くよ

クラスについて

クラスの作り方

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でメソッドや変数を削除するとメモリが解放される