クラス属性およびメソッドの定義

クラスにバインドされた変数は すべてクラス属性 です。クラス内で定義された関数は すべてメソッド です。メソッドは、 クラスのインスタンス (慣習として self と呼びます) を第 1 引数として受け取ります。例えば、 クラス属性およびメソッドを定義するには、以下のコードを入力します。

class MyClass
    attr1 = 10        #class attributes
    attr2 = "hello"

    def method1(self):
        print MyClass.attr1   #reference the class attribute

    def method2(self):
        print MyClass.attr2   #reference the class attribute

    def method3(self, text):
        self.text = text        #instance attribute
        print text, self.text   #print my argument and my attribute

    method4 = method3   #make an alias for method3

クラスの内側では、 クラス属性に対するすべての参照をクラス名で修飾する必要があります (MyClass.attr1 など)。インスタンス属性に対する参照は、 すべて self 変数で修飾する必要があります (self.text など)。クラスの外側では、 クラス属性に対するすべての参照をクラス名で修飾するか (MyClass.attr1 など)、 クラスのインスタンスで修飾する (x をクラスのインスタンスとすると x.attr1 などとする) 必要があります。クラスの外側では、 インスタンス変数に対するすべての参照をクラスのインスタンスで修飾する必要があります (x.text など)。