Python学習(二)

9749 ワード

Pythonオブジェクト向け
1.Pythonでクラスとオブジェクトを作成するのは簡単です.JAVAと対照的に、次のようなものもあります.
  • クラス(Class):同じ属性とメソッドを持つオブジェクトのセットを記述するために使用されます.コレクション内の各オブジェクトに共通するプロパティとメソッドを定義します.オブジェクトはクラスのインスタンスです.
  • クラス変数:クラス変数はインスタンス化されたオブジェクト全体で共通です.クラス変数はクラス内で定義され、関数体の外にあります.クラス変数は通常、インスタンス変数として使用されません.
  • データ・メンバー:クラス変数またはインスタンス変数.クラスおよびそのインスタンス・オブジェクトに関連するデータを処理します.
  • メソッド書き換え:親から継承されたメソッドがサブクラスの要件を満たすことができない場合は、メソッドの書き換えとも呼ばれるメソッドのオーバーライド(override)を書き換えることができます.
  • ローカル変数:現在のインスタンスのクラスにのみ使用されるメソッド内の変数を定義します.
  • インスタンス変数:クラスの宣言では、属性は変数で表されます.この変数をインスタンス変数と呼び、クラス宣言の内部ではありませんが、クラスの他のメンバーメソッドの外で宣言されます.
  • 継承:派生クラス(derived class)がベースクラス(base class)を継承するフィールドとメソッドです.継承により、派生クラスのオブジェクトをベースクラスオブジェクトとして扱うことも可能になります.たとえば、DogタイプのオブジェクトがAnimalクラスから派生し、これがシミュレーション「(is-a)」関係(例図、DogはAnimal)です.
  • インスタンス化:クラスのインスタンス、クラスの特定のオブジェクトを作成します.
  • メソッド:クラスで定義された関数.
  • オブジェクト:クラスによって定義されたデータ構造のインスタンス.オブジェクトには、2つのデータ・メンバー(クラス変数とインスタンス変数)とメソッドが含まれます.
  • 2.クラスAnimalsを定義する:(1)init()コンストラクション関数を定義します.他のオブジェクト向け言語とは異なり、Python言語では、自分のインスタンスを表すselfを最初のパラメータとして明確に入力します(クラスのメソッドは通常の関数とは特別な違いがあります.これらは追加の最初のパラメータ名が必要です.慣例に従ってその名前はselfです).(2)インスタンス化されたペアcat,init()メソッド受信パラメータを作成します.(3)ポイント番号を使用する.に表示されます.
    class Animal:
        #  initi(),eat(),drink()
        def __init__(self,name):
            self.name = name
            print('       ')
        def eat(self):
            print(self.name +'     !')
        def drink(self):
            print(self.name +'    !')
    #     , JAVA      new   ()
    cat =  Animal('miaomiao')
    print(cat.name)
    cat.eat()
    cat.drink()
    
    class Person:        
        def __init__(self,name):
            self.name = name
            print ('        ')
    
        def eat(self):
            print('      ')
     #      
    class Student(Person):
       def __init__(self):
          print ('        ')
     
       def study(self):
          print('      ')
    
    s = Student()          #      
    s.study()              #        
    s.eat()                #       
    

    3.Python内蔵クラス属性:
  • dict:クラスのプロパティ(クラスのデータプロパティからなる辞書を含む)
  • doc:クラスのドキュメント文字列
  • name:クラス名
  • module:クラス定義が存在するモジュール(クラスのフルネームは「main.className」、クラスがインポートモジュールmymodにある場合className.moduleはmymod)
  • bases:クラスのすべての親構成要素(すべての親からなるメタグループを含む)
  • class Employee:
       '       '
       empCount = 0
     
       def __init__(self, name, salary):
          self.name = name
          self.salary = salary
          Employee.empCount += 1
       
       def displayCount(self):
         print "Total Employee %d" % Employee.empCount
     
       def displayEmployee(self):
          print "Name : ", self.name,  ", Salary: ", self.salary
     
    print "Employee.__doc__:", Employee.__doc__
    print "Employee.__name__:", Employee.__name__
    print "Employee.__module__:", Employee.__module__
    print "Employee.__bases__:", Employee.__bases__
    print "Employee.__dict__:", Employee.__dict__
    

    4.一重下線、二重下線、頭尾二重下線の説明:
  • foo:特殊な方法を定義し、一般的にはinit()のようなシステム定義の名前です.
  • _foo:単一の下線で始まるのはprotectedタイプの変数です.つまり、保護タイプはサブクラスへのアクセスのみを許可し、from module import*
  • には使用できません.
  • __foo:二重下線はプライベートタイプ(private)の変数を表し、このクラス自体へのアクセスを許可するしかありません.