python独学成才の道類の詳細な使い方

3397 ワード

文書ディレクトリ
  • pythonクラス概要
  • クラス
  • を作成
  • インスタンスの作成と使用
  • クラス継承
  • インポートモジュールのクラス
  • 静的方法
  • pythonクラスの概要
    pythonはオブジェクト向けにプログラミングされた言語で、pythonのクラスとjavaのクラスは思想的に同じところがたくさんあります.例えばpythonクラスもclassで修飾されています.中にはメンバー属性、メンバーメソッド、構造関数もあります.親メソッドを継承したり書き換えたりすることもできますが、javeのクラスとは書き方が大きく異なります.
    クラスを作成
    class Animal():
    
        def __init__(self, name, age, sex):
            self.name = name
            self.age = age
            #     
            self._sex = sex
            #     
            self.id = hash(self.name + str(self.age))
    
        def animalDesc(self):
            print("this is " + self.name + ", its age is " + str(self.age))
    
        def otherInfo(self):
            pass
    
        def getId(self):
            return self.id
    
        def getSex(self):
            print(self._sex)
    
    

    ブロガーはここでクラスについて詳しく説明しません.デフォルトでこの文章を読む騒年にはオブジェクト向けの基本的な常識があります(javaのクラスについてよく知っています).ここでは、1.class Animal()javaでclassを作成するときにこれがありません()、pythonという()は継承するクラスを追加するために使用され、pythonは多くの継承を許可します.ブロガーはここで継承に使われていないので、空です.2. __init__この方法はクラスの構造方法で、書き方が特殊で、javaではクラスの構造方法とクラス名が同じで、pythonでは構造方法が__に統一されています.init__. 3.selfとは、javaのthisと同様に現在のインスタンス自体を指しますが、javaのthisはデフォルトで、pythonのselfは存在する必要があります(静的メソッドを除く).pythonは、クラス内の関数の最初のパラメータに自己オブジェクトインスタンスをデフォルトで渡します.4.self.name、self.ageはすべて属性で、javaの中で属性は単独で定義して、pythonの中で属性は構造方法の中でself.xxxを通じて定義します.5. self._sexこの属性はself.name,self.ageのような属性とは異なりself.xxxのような属性はプライベート属性であり,クラス内部でのみアクセスでき,オブジェクトインスタンスを介して直接アクセスできない.6.self.idこれはデフォルトのプロパティで、オブジェクトインスタンスを作成するときにidというパラメータを渡す必要はありません.
    インスタンスの作成と使用
    pythonでオブジェクトインスタンスを作成するにはnewキーを使用する必要はありません.直接作成すればいいです.
        animal = Animal('pig', 2, 'female')
        animal.animalDesc()
        print('animal is ' + animal.name + ', sex is ' + animal.getSex())
    

    クラス継承
    pythonではマルチ継承が実現されています.これはjavaとは異なり、javaでは単一継承しかできません.マルチ継承が使えるとはいえ、1つのクラスを継承すればできることは複数のクラスを継承しないほうがいい.プログラムが簡単であればあるほどいい.
    class Pig(Animal):
    
        def __init__(self, name, age, weight):
            super().__init__(name, age, 'female')
            #       
            self.weight = weight
    
        #       
        def otherInfo(self):
            print("the pig weights " + str(self.weight) + " kg.")
    
        #       
        def pigEat(self):
            print("I can eat more.")
    

    上にはAnimalクラスから継承されたpigクラスがあります.1.子クラスの構築方法では、javaと同様に親クラスの構築方法を呼び出す必要があります.2.サブクラスは独自の属性を持つことができます.3.子クラスは親のメソッドを書き換えることができます.4.サブクラスには独自の方法がある.
    モジュール内のクラスのインポート
    先にimportインポートモジュールの関数(転送ゲート)について説明しましたが、importインポートモジュールのクラスでもいいです.たとえば、AnimalTest.pyファイルを新規作成すると、AnimalTest.pyファイルで次のようにインポートできます.1.モジュール全体をインポートするimport Animal
    pig = Animal.Pig("Pig", 2, 200)
    

    2.モジュールの一部クラスfrom Animal import Animal,Pigをインポート
    pig = Pig("Pig", 2, 200)
    

    3.モジュール内のすべてのクラスfrom Animal importを*でインポート*
    pig = Pig("Pig", 2, 200)
    

    4.asを使用してモジュール内のクラスに別名from Animal import Pig as pを作成
    pig = p("Pig", 2, 200)
    

    スタティツクメソッド
    pythonでは静的メソッドもサポートされており、1つのメソッドに@staticmethod注釈を加えることで、このメソッドは静的メソッドとなり、静的メソッドにはselfパラメータが存在せず、静的メソッドはクラスによって直接呼び出されることができる.次のようになります.
        @staticmethod
        def classDesc():
            print("this is a dog class")
    
      #  Dog      classDesc  ,  @staticmethod       
      #   Dog           
      Dog.classDesc()