Pythonは対象に向かってカプセル化して継承して多形の例と解説します。


対象に向かう三つの大きな特徴:パッケージ、継承、多形
1.パッケージ:プログラムの安全性向上
データ(属性)と挙動(方法)をクラスオブジェクトに包装し、メソッド内部で属性をオブジェクトの外部呼び出しを行います。このように内部の具体的な実現に関心を持つ必要はありません。pythonには属性の私有に専用の修飾子がありません。属性がアクセスされたくない場合は、前の2つのアンダースコアを使用します。
2.継承:コードの多重化を高める
3.プログラムの拡張性とメンテナンス性を高める。
1.パッケージ
私達はプライベートの使い方を見に来ました。

#   :     
#     :2021/4/4/0004 22:11
class Student:
    def __init__(self,name,age):
        self.name=name
        self.__age=age

    def show(self):
        print(self.name,self.__age)

laoxin=Student('     ',38)
laoxin.show()
print(laoxin.name)
print(laoxin.__age)
在这里插入图片描述
プライベート属性はどうやって訪問されますか?
下記の形式でアクセスできます。
在这里插入图片描述
print(laoxin.Student_uアクセスする
しかし、一般的にはプライベートな方法を見たら、なるべく訪問しないようにします。
2.継承
構文フォーマット:
クラス名(親類1、親類2)
パス
  • もし一つのクラスが引き継がれていないなら、デフォルトの統合object
  • pythonは多相続をサポートします。
  • サブクラスを定義するときは、その構造関数において親クラスの構造関数
  • を呼び出す必要があります。
    
    #   :     
    #     :2021/4/4/0004 22:11
    class Person(object):
        def __init__(self,name,age):
            self.name=name
            self.age=age
        def info(self):
            print(self.name,self.age)
    
    class Student(Person):
        def __init__(self,name,age,sut_no):
            super().__init__(name,age)
            self.sut_no=sut_no
    
    class Teacher(Person):
        def __init__(self,name,age,teachofyear):
            super(Teacher, self).__init__(name,age)
            self.teachofyear=teachofyear
    
    stu=Student('     ',40,1001)
    teacher=Teacher('   ',38,10)
    
    stu.info()
    teacher.info()
    Pythonでは、マルチ相続もサポートされます。
    例えば校長は、person類を集めたり、teacher類を継承したりします。
    多形的実現
    多形とは、一つの変数が参照するオブジェクトの種類が分からなくても、この変数の呼び出し方法によって実行中に変数によって参照されるオブジェクトの種類に応じて、どのオブジェクトを呼び出すかを動的に決定するという意味です。
    
    #   :     
    #     :2021/4/4/0004 22:11
    class Animal(object):
        def eat(self):
            print("       ")
    class Dog(Animal):
        def eat(self):
            print('    ')  #    
    
    class Cat(Animal):
        def eat(self):
            print('   ')
    
    class Person:  #       
        def eat(self):
            print('    ')
    
    def fun(obj):
        obj.eat()
    
    fun(Cat())
    fun(Dog())
    fun(Animal())
    
    fun(Person()) #         
    理由:
    Pythonは動的言語であり、静的言語は多形を実現するためには、明確に継承してから使用することができますが、動的言語はこの方法を持っているかどうかだけに関心があります。
    以上、対象に向けたパッケージについて、これまでの記事を継承し、多形化した文章を紹介します。対象に向けたパッケージの追加、継承、多形コンテンツについては、以前の記事を検索してください。または、下記の関連記事を引き続きご覧ください。これからもよろしくお願いします。