python:オブジェクト向けプログラミング、パッケージング、継承、マルチステート

11143 ワード

目次
  • 第一部:Python
  • 1.オブジェクト向けプログラミング
  • 2.継承
  • 三.マルチステート
  • 備考:
  • 第一部:Python
    一.オブジェクト向けプログラミング
    1.クラスAのインスタンス化オブジェクト名をb:_とするinit__(self)関数はインスタンス化時の操作を決定します._repr__(self)関数は、入力bが与える結果を決定する._str__(self)関数はprint(b)が与えた結果を入力することを決定し、両者の定義はreturnで返される._del__(self)関数は、システム関数del()を呼び出すときに実行される動作を決定する.注意:selfに関連する関数をインスタンス関数、クラスに関連する(selfを付けない)関数をクラス関数と呼びます.2.オブジェクトの特性を解析するときに、各インスタンスに依存するか、グローバルに依存するか、インスタンスとはあまり関係がないかを明確にするには、静的メンバーとして定義する必要があります.注:self.属性は特定のインスタンスに依存する属性であり、selfはインスタンス、クラス名を表す.selfはクラス全体のプロパティです.
    class Book:
        #       ,    
        count = 0
    
        #     
        def __init__(self, title, price=0.0, author=None):
            self.title = title
            self.price = price
            self.author = author
            Book.count += 1
    
        #       ,       del()   
        def __del__(self):
            Book.count -= 1
    
        #  self   
        def __repr__(self):
            return ''.format(self.title)
    
        #  print(self)   
        def __str__(self):
            return '[   :{}]'.format(self.title)
    
        def print_info(self):
            print('  :{},  :{},  :{}'.format(self.title,self.price,self.author))
    
    book1 = Book('python  ', 39.9, 'Tom')
    book1.print_info()
    print(book1)

    3.変更できない属性を設定する:_init__(self,...)関数の属性はdel()で削除または直接変更できます.変更できない属性を設定するには@propertyを付ける必要があります.
    import datetime
    
    class Student:
    
        def __init__(self,name,birth):
            self.name = name
            self.birth = birth
    
        @property
        def age(self):
            return datetime.date.today().year - self.birth.year
    
    s1 = Student('Tom',datetime.date(1997,7,14))
    
    print(s1.age)

    注意:@propertyで定義する属性は、変更または削除できません.@属性名を使用できます.setterと@属性名.deleterは、対応するエラーメッセージを定義します.
    @age.setter
    def age(self,value):
        raise AttributeError('    !')
    
    @age.deleter
    def age(self):
        raise AttributeError('    !')

    二.継承
    1.子クラスは派生クラス、親クラスはスーパークラスとも呼ばれ、すべてのオブジェクトの特徴を分析した後、共通性のある親クラスを定義してから、親クラスを継承する子クラス、すなわち具体的なブランチを定義することができます.具体的な方法は以下の通りです.
    import datetime
    
    class Employee:
        def __init__(self,name,birth,salary):
            self.name = name
            self.birth = birth
            self.salary = salary
    
    #     ,        
    class Programmer(Employee):
        def __init__(self,name,birth,salary,project):
            #           ,Employee  super()  ,     
            Employee.__init__(self,name,birth,salary)
            self.project = project
    
    p1 = Programmer('tom',datetime.date(1987,3,12),6000,'AI')

    三.マルチステート
    1.定義:同じタイプの異なるインスタンスで、同じメッセージに対して異なる応答を行います.
    コメント:
    1.pythonの日付は、datetimeモジュール、import datetimeをインポートする必要があります.日付:datetimeを具体的に説明します.date(年、月、日)、取得年齢:return datetime.date.today().year - datetime.date(年,月,日).year 2.クラスの特徴はクラスでもよく、実際のプログラミングではクラスの直列と関連がたくさんあります.