Python2.5/クラス

Python2.5/クラス

基本

class Hoge:
    def __init__(self, a)
        self.a = a
    def piyo(self, b)
        print b

classの部分は

class Hoge():

このように括弧付きで書いてもOK。

継承

作りたいクラス名に続き括弧で継承したいクラス名を続ける

class Hoge(Piyo):
    def fuga(self, a):
 

メソッド

メソッドは通常の関数と同じように作るが、第1引数にかならず self を取るのが Python の特徴

class Hoge:
    def fuga(self, a):

インスタンス生成

クラスからインスタンスを生成するには

a = Hoge()

このようにクラス名括弧で生成できる。

コンストラクタ

コンストラクタは特殊なメソッドで

class Hoge():
    def __init__(self, a):
        self.piyo = a

init という固定名になっている。 これもメソッド一種なので同様に第1引数に self を取る。

この self は JavaScript の this 同様、まっさらな原始のインスタンスでフニャフニャなので、ここに好きにプロパティを追加することができる。 これが Python のインスタンス初期化機構である。

スーパークラスのコンストラクタ呼び出し

コンストラクタを作らなければスーパークラスのコンストラクタが暗黙で使用されるのだが、 自分で書いた場合は変数のマッピングはやらないといけないのでそれをやる

class Hoge(Piyo):
    def __init__(self, a ,b):
        Piyo.__init__(self, a)
        self.b = b

このように親クラスのコンストラクタメソッドを名前指定して直接キックする。seflも自前で渡す。

プライベートメソッド

Python のメソッドは頭にアンダーバーを2個つけることで private に指定することができる

class Hoge:
    def pub(self):
        print "pub"
        self.__pri()
    def __pri(self):
        print "pri"
 
Hoge().pub()
Hoge().__pri()  #=> エラー

静的(クラス)メソッド

Python の静的メソッドは Java のアノテーションのような表記で

class Hoge:  
    @staticmethod
    def piyo(a):
        return a

このように staticmethod というキーワードをくっつける そしてメソッドの第一引数には self を渡さない

使う場合はこのように使う。

print Hoge.piyo("aaa")

クラス変数

クラス変数はこのように書く

class Hoge:
    hoge = "a"

使う

print Hoge.hoge

自身のインスタンスのメソッド内から使う

class Hoge:
    hoge = "a"
    def piyo(self)
        print self.hoge
        print Hoge.hoge

self を通じてもアクセスできるし、そのまま直にクラス名から引っ張ってもアクセスできる。

python/python25/class.txt · 最終更新: 2017-09-26 19:10 by ore