目次
1. 継承の概要" >1. 継承の概要
例: " >例:
3.3 重写父类方法" >3.3 重写父类方法
4.1 多继承" >4.1 多继承
想一想:" >想一想:
5. 多态" >5. 多态
5.1 什么是多态?" >5.1 什么是多态?
5.2  案例" >5.2  案例
三、总结" >三、总结
ホームページ バックエンド開発 Python チュートリアル Python の継承とポリモーフィズムを検討する

Python の継承とポリモーフィズムを検討する

Jul 25, 2023 pm 03:14 PM
python

1. 継承の概要

継承は新しいクラスを作成する方法です。新しく作成されたクラスはサブクラスと呼ばれ、継承されたクラスは親と呼ばれますクラス、スーパークラス、基本クラス。継承の特徴は、親クラスの属性(機能、スキル)をサブクラスでも利用できることです。継承はクラス間の関係です。

継承により、コードの冗長性が削減され、再利用性が向上します。

実生活では、一般に、相続とは、以下に示すように、子が親の財産を継承することを指します。 ##2. 継承の使い方は?

Python の継承とポリモーフィズムを検討する

1. 継承構文


#クラス 派生クラス名(基底クラス名): #基底クラス名を記述します。括弧。

継承関係において、既存の設計されたクラスを親クラスまたは基本クラスと呼び、新しく設計されたクラスをサブクラスまたは派生クラスと呼びます。派生クラスは親クラスのパブリック メンバーを継承できますが、プライベート メンバーは継承できません。

#2. 継承の特徴

継承では、基本クラスのコンストラクター (

##) #init

    () メソッド) は自動的には呼び出されません。派生クラスの構築時に特に呼び出す必要があります。
  1. 派生クラスで基本クラスのメソッドを呼び出す必要がある場合は、「基本クラス名.メソッド名 ()」メソッドを使用してそれを実現し、クラスを追加する必要があります。基本クラスの名前プレフィックス. 、および self パラメーター変数を取得する必要があります。クラス内で通常の関数を呼び出す場合とは異なり、self パラメータを持ってくる必要はありません。この目的のために、組み込み関数 super() を使用することもできます。

  2. #Python は常に最初に対応する型のメソッドを検索します。派生クラスで対応するメソッドが見つからない場合は、派生クラスで 1 つずつ検索を開始します。基本クラス (まず、このクラスで呼び出されるメソッドを探します。見つからない場合は、基本クラスで探します)。

#3. 単一継承

3.1 単一継承

例:

class Animal: #父类
    def eat(self): 
        print("-----吃-----")


    def drink(self):
        print("-----喝-----")




class Dog(Animal): #子类继承父类
    """
    def eat(self):
        print("-----吃-----")


    def drink(self):
        print("-----喝-----")
    """
    pass




class Cat:
    pass




wang_cai = Dog()
wang_cai.eat()
wang_cai.drink()

#実行結果:


Python の継承とポリモーフィズムを検討する

##3.2 多層継承

例:

class Animal:
    def eat(self):
        print("-----吃-----")


    def drink(self):
        print("-----喝-----")




class Dog(Animal):
    def bark(self):
        print("-----汪汪叫------")




class XTQ(Dog):
    """定义了一个哮天犬 类"""
    pass




class Cat(Animal):
    def catch(self):
        print("----捉老鼠----")




xtq = XTQ()
xtq.eat()
xtq.bark()

実行結果:



3.3 重写父类方法

例:

class Animal: #父类
    def eat(self):
        print("-----吃-----")


    def drink(self):
        print("-----喝-----")


 
class Dog(Animal): 
    def bark(self):
        print("-----汪汪叫------")




class XTQ(Dog): #重写Dog方法
    """定义了一个哮天犬 类"""
    def bark(self):
        print("----嗷嗷叫-----")




class Cat(Animal):
    def catch(self):
        print("----捉老鼠----")




xtq = XTQ()
xtq.eat()
xtq.bark()

运行结果:

Python の継承とポリモーフィズムを検討する


4. 多继承

4.1 多继承

Python の継承とポリモーフィズムを検討する

从图中能够看出,所谓多继承,即子类有多个父类,并且具有它们的特征。

Python中多继承的格式如下:

# 定义一个父类
class A:
    def printA(self):
        print('----A----')


# 定义一个父类
class B:
    def printB(self):
        print('----B----')


# 定义一个子类,继承自A、B
class C(A,B):
    def printC(self):
        print('----C----')


obj_C = C()
obj_C.printA()
obj_C.printB()

运行结果:

----A----
----B----

Python中是可以多继承的,父类中的方法、属性,子类会继承。


想一想:

如果在上面的多继承例子中,如果父类A和父类B中,有一个同名的方法,那么通过子类去调用的时候,调用哪个?

#coding=utf-8
class base(object):
    def test(self):
        print('----base test----')
class A(base):
    def test(self):
        print('----A test----')


# 定义一个父类
class B(base):
    def test(self):
        print('----B test----')


# 定义一个子类,继承自A、B
class C(A,B):
    pass


obj_C = C()
obj_C.test()


print(C.__mro__) #可以查看C类的对象搜索方法时的先后顺序

运行结果:

Python の継承とポリモーフィズムを検討する


5. 多态

5.1 什么是多态?

多态的概念是应用于Java和C#这一类强类型语言中,而Python崇尚“鸭子类型”。

所谓多态:定义时的类型和运行时的类型不一样,此时就成为多态。

  • Python伪代码实现Java或C#的多态。

5.2 案例

Python “鸭子类型”

class Duck:
    def quack(self):
        print("Quaaaaaack!")




class Bird:
    def quack(self):
        print("bird imitate duck.")




class Doge:
    def quack(self):
        print("doge imitate duck.")




def in_the_forest(duck):
    duck.quack()




duck = Duck()
bird = Bird()
doge = Doge()
for x in [duck, bird, doge]:
    in_the_forest(x)

运行结果:

Python の継承とポリモーフィズムを検討する


三、总结

本文以生活中的基础现象为切入点,主要介绍了Python基础中继承和多态,包括单继承、多继承的语法、多态常见的 “鸭子类型”、 以及如何重写父类的方法都做了详细的讲解。

以上がPython の継承とポリモーフィズムを検討するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

ホットトピック

メモリに収まらないPythonで大きなデータセットを処理する方法は? メモリに収まらないPythonで大きなデータセットを処理する方法は? Aug 14, 2025 pm 01:00 PM

Pythonのメモリを超える大きなデータセットを処理する場合、一度にRAMにロードすることはできません。代わりに、チャンク処理、ディスクストレージ、ストリーミングなどの戦略を採用する必要があります。 CSVファイルは、PandasのChunksizeパラメーターを介してチャンクで読み取ることができ、ブロックごとにブロックを処理できます。 Daskを使用して、Pandas構文と同様の並列化とタスクスケジューリングを実現して、大規模なメモリデータ操作をサポートできます。メモリの使用量を減らすために、テキストファイルをラインごとに読み取るためのジェネレーター関数を書き込みます。 Parquet Colornarストレージ形式をPyarrowと組み合わせて使用して、特定の列または行グループを効率的に読み取ります。 NumpyのMemmapを使用して大きな数値配列をメモリして、需要のあるデータフラグメントにアクセスするか、SQLiteやDuckDBなどの軽量データにデータを保存します。

崇高なテキストでPythonコードをデバッグする方法は? 崇高なテキストでPythonコードをデバッグする方法は? Aug 14, 2025 pm 04:51 PM

USESUBLIMETEXT’SBUILDSYSTEMTORUNPYTHONSCRIPTSSANDCATCHERRORSBYPRESSINGCTRL BAFTSTITINGTHECRECTSTYSTEMSESTINGACUSTOMONE.2.INSERTSTRATEGICPRINT()STATEMESTCHECKECKVARIABLEVALUES、タイプ、タイプ、セキュリティフロー、LABELSANDREPRを使用します

崇高なテキストでPythonコードを実行する方法は? 崇高なテキストでPythonコードを実行する方法は? Aug 16, 2025 am 04:58 AM

Pythonがインストールされ、システムパスに追加されていることを確認し、Python(versionまたはpython3-version Verification from terminal)を実行してください。 2。hello.pyなどの.py拡張子としてpythonファイルを保存します。 3. sublimetextでカスタムビルドシステムを作成する、Windowsユーザーは{"cmd":["python"、 "-u"、 "$ file"]}を使用します。

VSCODEでPythonスクリプトをデバッグする方法 VSCODEでPythonスクリプトをデバッグする方法 Aug 16, 2025 am 02:53 AM

Pythonスクリプトをデバッグするには、最初にPython拡張子をインストールしてインタープリターを設定し、Launch.jsonファイルを作成してデバッグ構成を設定する必要があります。次に、コードにブレークポイントを設定し、F5を押してデバッグを開始する必要があります。スクリプトはブレークポイントで一時停止され、チェック変数と段階的な実行が可能になります。最後に、コンソールの出力を表示したり、ログを追加したり、パラメーターを調整したりするなどして問題を確認して、環境が正しい後にデバッグプロセスがシンプルで効率的であることを確認します。

VSCODEでPythonコードを自動的にフォーマットする方法 VSCODEでPythonコードを自動的にフォーマットする方法 Aug 14, 2025 pm 04:10 PM

toautomately formatpythoncodeinvscode、installblackusingpipinstallblack、instiththeofficialmicrosoftpythonextension、setblackastheformatterinsettings.jsonwith "python.formatting.provider": "black"、enabableformatonsavebyadding "edit

崇高なテキストでPythonプロジェクトを作成する方法は? 崇高なテキストでPythonプロジェクトを作成する方法は? Aug 16, 2025 am 08:53 AM

InstallSublimeTextandPython,thenconfigureabuildsystembycreatingaPython3.sublime-buildfilewiththeappropriatecmdandselectorsettingstoenablerunningPythonscriptsviaCtrl B.2.OrganizeyourprojectbycreatingadedicatedfolderwithPythonfilesandsupportingdocument

Pythonのクラスメソッドは何ですか Pythonのクラスメソッドは何ですか Aug 21, 2025 am 04:12 AM

classMethodsinpythonareboundtotheclassandottoinstances、creatinginganobject.1.theyReadeDefinedTheSusingsingsisingsisthedtaklsasthefirstparameter、referringtotheclassiT self.2

Python Asyncioキューの例 Python Asyncioキューの例 Aug 21, 2025 am 02:13 AM

Asyncio.Queueは、非同期タスク間の安全な通信のためのキューツールです。 1.プロデューサーはawaitqueue.put(item)を介してデータを追加し、消費者はwaitqueue.get()を使用してデータを取得します。 2。処理する各アイテムについて、queue.task_done()を呼び出して、queue.join()がすべてのタスクを完了するのを待つ必要があります。 3。消費者に停止するように通知するために、最終信号としてなしを使用します。 4.複数の消費者の場合、複数のエンド信号を送信する必要があります。または、タスクをキャンセルする前にすべてのタスクを処理する必要があります。 5.キューは、マックスサイズの制限容量の設定をサポートし、操作を自動的に一時停止して取得し、イベントループをブロックしません。プログラムは最終的にCANCを通過します

See all articles