トップページ
ひらく | たたむ | ページトップ
↓マウスで反転選択した文字を検索
Python
   
ページ内検索 ページ外検索
検索したい文字を入力して
ENTERを押すと移動します。
\n
[ トップページ ]
[ ____CommandPrompt ] [ ____JScript ] [ ____MySQL ] [ ____Cygwin ] [ ____Java ] [ ____Emacs ] [ ____Make ] [ ____Perl ] [ ____Python ] [ ____OpenGL ] [ ____C# ] [ ____StyleSheet ] [ ____C++ ] [ ____Winsock ] [ ____Thread ] [ ____VisualStudio ] [ ____C ] [ ____Win32API ] [ ____Lua ] [ ____PhotoShop ]
ヘッダ検索
___

■ クラス(class)


  SYNTAX
    class NAME:
      statement;




    クラスを定義する。
    定義が評価されるとクラスオブジェクトが生成される。
    class Test:
      # これはクラスオブジェクトの変数 ( C++ でのメンバとは異なる )
      i = 10;

      def __init__( self, i ):
        self.i = i;

      def f( self ):
        print "calll method = ", self.i
      
クラスをインスタンス化するには関数表記() を使う。 これによって空のオブジェクトが作成される。
    x = Test();

    # 生成されたインスタンスには属性参照ができる

    # データ属性を参照する
    print x.i;

    # 関数オブジェクトのデータ属性を参照する
    print x.f;

    # メソッドをコールする。
    #  
    x.f();

    # メソッドをコールすると第一引数としてインスタンスが関数に渡される。
    # 次の処理と同じ。
    Test.f( x );  

    
___

■ コンストラクタ . constructor

__init__ というメソッドを定義すると インスタンス生成の時点でコールされる。
    class Test
      def __init__( self, i, j ):
        self.i = i;


    # コンストラクタに引数を渡してインスタンスを作成する
    i = Test( 10, 2 );

___

■ メソッド(method)

    class Test
      def f( self, i, j ):
        self.i = i;

      # メソッドから別のメソッドをコールするには self 引数を経由する
      def g( self ):
        self.f();

    # メソッドをコールする。
    x.f();
    
  POINT
    # これと同じ
    Test.f( x );
    
___

■ プライベート変数

POINT クラス内アクセス限定にするには識別子に __ を2個以上を前置する。 これによって名前が変更されるため、外からアクセスされにくくなる。
    class Test
      def f( self, i, j ):
        self.i = i;

      def __p( self ):
        print "calll private method"


    i = Test( 1, 0 );

    # これはコールできない
    i.__p();

  POINT
    名前を変更しているにすぎないので, 次のようにコールできる
    i._Test__p();

___

■ 文字列表現

__str__ をオーバーライドすると str() 関数の結果をカスタマイズできる
    class Test:
      def __str__(self):
        return "test";

    t = Test()
    print str(t)      
___

■ 継承

SYNTAX class Name( Base ): statement:

    class D( Test ):
      def h( self ):
        print "call method h"

      # オーバーライドするには同名の属性をつける。
      def f( self ):
        print "call overwrite method f"

    # 派生クラスをインスタンス化する
    i = D(10, 1);

    i.h();

  POINT
    # メソッドの探索は派生クラスから順番にされる。
    # 属性名として f を指定すると D.f() -> Test.f()と順番に検索される。
    i.f();
すべてのクラスは object を継承する。
    # 明示することもできる。
    class Test( object ):
      pass

    # これと同じ
    class Test:
      pass
___

■ 内部クラス

    class Test:
      class Type:
        """ 
        内部クラス
        """
___

■ オペレータのオーバーライド


    def Vector:
      def __add__(self, rhs ):
        

      def __sub__(self, rhs ):

      def __mul__(self, rhs ):
        




NINJAIDX 8