Pythonでオブジェクト指向プログラミングを行う方法

silencement
リリース: 2019-06-24 11:19:05
オリジナル
2968 人が閲覧しました

Pythonでオブジェクト指向プログラミングを行う方法

オブジェクト指向プログラミングは、単にクラスとオブジェクトの使用に基づいています。すべてのコードはクラスとオブジェクトを通じて実装されます。プログラミングはオブジェクト指向プログラミングです。

オブジェクト指向の 3 つの主要な特徴: カプセル化、継承、ポリモーフィズム

最初にクラスを作成します

#使用class创建一个School类,类中有个student方法
class School:
    def student(self):
        pass
a1=School()
ログイン後にコピー

1。カプセル化

1 . カプセル化: 特定のコンテンツを最初に場所にカプセル化し、必要に応じて呼び出します

class School:    def __init__(self,name,age):    #构造方法,创建对象是执行
        self.name=name
        self.age=age#创建对象a1,a2a1=School("zhangsan",18)
a2=School("lisi",18)
ログイン後にコピー

上記のコードはカプセル化の機能を実装し、それぞれの名前と年齢をそれぞれ self の name 属性と age 属性にカプセル化します。

クラスで定義された関数はメソッドと呼ばれ、__init__ を持つ関数はコンストラクターと呼ばれ、a1 と a2 オブジェクトの作成時に自動的に実行されます。

2. 呼び出し: 呼び出しには、オブジェクトを介した直接呼び出しと自分自身を介した間接呼び出しの 2 つの方法があります

オブジェクトを介した直接呼び出し

class School:    def __init__(self,name,age):
        self.name=name
        self.age=age    def student(self):        print("name:%s,age:%s"%(self.name,self.age))#创建对象a1,a2a1=School("zhangsan",18)
a2=School("lisi",18)
print a1.name,a1.age
print a2.name,a2.age#执行结果: zhangsan 18
      lisi 18
ログイン後にコピー

自分自身を介した間接呼び出し

class School:
    def __init__(self,name,age):
        self.name=name
        self.age=age

    def student(self):
        print("name:%s,age:%s"%(self.name,self.age))
#创建对象a1,a2
a1=School("zhangsan",18)
a2=School("lisi",18)

#执行类中的方法时,通过self间接调用被封装的内容
a1.student()
a2.student()
#执行结果:
#name:zhangsan,age:18
#name:lisi,age:18
ログイン後にコピー

2. 継承

#1. 継承: 派生クラス (サブクラス) はどちらも基本クラス (親クラス) のメソッドを継承でき、複数のクラスに共通のメソッドを抽出できます。サブクラスは親クラスを継承するだけでよく、各メソッドを 1 つずつ実装する必要はありません。

クラスを継承していることを示すために、クラス名の後に括弧内に別のクラスを記述します

class School:
    def __init__(self,name,age):
        self.name=name
        self.age=age

    def student(self):
        print("name:%s,age:%s"%(self.name,self.age))
    def classroom(self):
        print("%s去教室"%self.name)

class SchoolA(School):  #SchoolA继承School
    def __init__(self,name):
        self.name=name

class SchoolB(SchoolA): #SchoolB继承SchoolA
    def __init__(self,name):
        self.name=name
#创建对象a1
a1=SchoolA("zhangsan")
a1.classroom()
#创建对象a2
a2=SchoolB("lisi")
a2.classroom()

#执行结果:
#   zhangsan去教室
#   lisi去教室
ログイン後にコピー
上記のコードでは、ご覧のとおり、SchoolA と SchoolB にはクラスルーム メソッドがありませんが、SchoolB は SchoolA を継承し、SchoolA は School を継承しているため、

School のクラスルーム メソッドを呼び出すことができます。オブジェクトを作成した後。

2. 多重継承

Pythonでは、クラスは複数のクラスを継承することもできます。複数のクラスを継承する場合、クラス内の関数を検索するには2つの方法があります

Depth優先順位: クラスがクラシッククラスの場合、多重継承の場合、深さ優先で検索されます

幅優先: クラスが新しいスタイルのクラスの場合、多重継承の場合、幅優先の方法で検索されます

(python3.

以上がPythonでオブジェクト指向プログラミングを行う方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート