Pythonオブジェクト指向プログラミングの分析

概要

多くの人がPythonと接触し、クローラーから始めます。実際、多くの言語がクローラーになることができますが、Pythonは他の言語よりも単純です。しかし、Pythonはクローラーに限定されず、人工知能や科学コンピューティングでより広く使用されています。古代人はこう言っています。大きな進歩を遂げるには、しっかりとした基盤を築くことが重要です。この記事では、主に、学習と共有のみを目的としたPythonのオブジェクト指向の知識について説明します。欠点がある場合は、訂正してください。

オブジェクト指向の機能

クラス:同じことを説明するために使用される特性のコレクション。たとえば、次のようなものです。人を表し、人間の属性と特性を持つ人クラス。
オブジェクト:次のようなクラスによって定義された具体的なインスタンス:zhangsanは具体的な人物を表します。
継承:基本クラスのメソッドとプロパティを継承するクラスを割り当て、次のような独自のプロパティと特性を持ちます。ManはPersonのサブクラスです。
カプセル化:データと実装の詳細を非表示にし、外部アクセス方法を提供します。
多態性:基本クラスは複数の派生クラスを持つことができ、異なる形式を持つことができます。
抽象化:詳細を脇に置き、重要な機能のみに焦点を当てるプロセス。
上記はオブジェクト指向の基本的な特徴ですが、Pythonはオブジェクト指向でどのように機能しますか?

クラスを作成

次のように:

classEmployee:"""スタッフカテゴリー"""
 emp_count =0 #変数はクラス変数であり、その値はこのクラスのすべてのインスタンス間で共有されます

 def __init__(self, name, salary):"""初期化"""
 self.name = name
 self.salary = salary
 Employee.emp_count +=1

 def display_count(self):"""表示数量"""print('Total Employee =', Employee.emp_count)

 def display_employee(self):"""情報を表示する"""print('name =', self.name,', salary = ', self.salary)

 def prt(self):"""自分で印刷する"""print(self)print(self.__class__)

 def __del__(self):"""デストラクタ"""print(self,'解放された')

オブジェクトを作成

Pythonは、Javaや.Netとは異なり、関数呼び出しに似たnewキーワードなしでオブジェクトを作成します。次のように:

' 最初のオブジェクトを作成します'
 emp =Employee('Jack',20)
 emp.display_count()
 emp.display_employee()
 emp.prt()

オブジェクトのプロパティを動的に追加および削除します

以下に示すように、オブジェクト属性は動的に追加できます。これは、コンパイルされた言語とは異なります。

 emp.age =17 #1つ追加します'age'属性
 emp.age =28 #変更する'age'属性
 del emp.age #削除'age'属性

以下に示すように、Pythonの組み込みメソッドを使用して属性を追加および取得することもできます。

print(getattr(emp,'name')) #属性を取得する
print(hasattr(emp,'age')) #属性を含めるかどうか
setattr(emp,'age',18) #属性と値を設定する
print(hasattr(emp,'age')) #属性を含めるかどうか
print(getattr(emp,'age')) #属性を取得する
delattr(emp,'age') #属性を削除
print(hasattr(emp,'age')) #属性を含めるかどうか

以下に示すように、Pythonには組み込みクラスのいくつかの属性もあります。

 # 組み込みオブジェクト
 print("Employee.__doc__:", Employee.__doc__)print("Employee.__name__:", Employee.__name__)print("Employee.__module__:", Employee.__module__)print("Employee.__bases__:", Employee.__bases__)print("Employee.__dict__:", Employee.__dict__)

クラスの属性とメソッド

次のように:

classJustCounter:"""クラスの説明"""
 __ secretCount =0 #クラスプライベート変数
 publicCount =0 #パブリック変数

 def count(self):
 self.__secretCount +=1
 self.publicCount +=1print('プライベート変数:', self.__secretCount)

Pythonでは、インスタンス化されたクラスがプライベートデータにアクセスすることは許可されていませんが、次に示すように、object._className__attrName(オブジェクト名._クラス名__プライベート属性名)を使用して属性にアクセスできます。

print(counter._JustCounter__secretCount)

クラスの継承

オブジェクト指向プログラミングの主な利点の1つは、コードの再利用です。この再利用を実現する方法の1つは、継承によるものです。継承によって作成された新しいクラスはサブクラスまたは派生クラスと呼ばれ、継承されたクラスは基本クラス、親クラス、またはスーパークラスと呼ばれます。

以下に示すように:Parentは、独自のプロパティとメソッドを持つ親クラスを表します。

classParent:"""親クラスを定義する"""
 parentAttr =100

 def __init__(self):print('親クラスのコンストラクターを呼び出す')

 def parentMethod(self):print('親メソッドを呼び出す')

 def setAttr(self, attr):
 Parent.parentAttr = attr

 def getAttr(self):print('親属性:', Parent.parentAttr)

 def myMethod(self):print('私は親クラスのMyMethodです')

子は、次のように、親から継承されたサブクラスを表します。

classChild(Parent):"""サブクラスを定義する"""

 def __init__(self):print('サブクラスのコンストラクターを呼び出す')

 def childMethod(self):print('サブクラスメソッドを呼び出す')

 def myMethod(self):"""Overrides親クラスメソッドをオーバーライドします"""print('私はMyMethodのサブクラスです')

 def __str__(self):"""人間の読書に適した書き換え方法"""return'strメソッドは'

サブクラスのインスタンス化

次のように:

 c =Child() #サブクラスオブジェクトをインスタンス化します
 c.childMethod() #サブクラスメソッドを呼び出す
 c.parentMethod() #親メソッドを呼び出す
 c.setAttr(200) #親メソッドを再度呼び出して、プロパティを設定します
 c.getAttr() #親クラスメソッドを再度呼び出して、属性を取得します
 c.myMethod() #サブクラスのMyMethodが呼び出されます

サブクラスとクラスの関係は、以下に示すように、組み込み関数を使用して判断できます。

print(issubclass(Child, Parent)) #対応する親子関係かどうかを判断します
 print(isinstance(c, Child)) #それがインスタンスオブジェクトであるかどうかを判断します
 print(isinstance(c, Parent)) #それがインスタンスオブジェクトであるかどうかを判断します

Recommended Posts

Pythonオブジェクト指向プログラミングの分析
Pythonマルチプロセスプログラミングの一般的な方法の分析
wavファイルのPython分析
PythonクローラーのJSの分析
Pythonイールドの使用例の分析
Python条件付き制御ステートメントの分析
Pythonモジュールの知識の完全な分析
pythonオブジェクト指向プログラミングを理解する方法
Pythonタートルライブラリ実装の基本的な分析
Python3.9の7つの機能
Pythonガベージコレクションメカニズムの詳細な分析
Pythonネットワークプログラミング
Pythonオブジェクト指向の例
Pythonデータ分析
Pythonオブジェクト指向の基本
C言語プログラムを呼び出すPythonのメソッド分析
AI自動マットサンプル分析のPython実装
Pythonオブジェクト指向の魔法の方法
12.Python3でのネットワークプログラミング
詳細なPythonIOプログラミング
Python線形補間分析
Python構文の基本
Pythonの基本構文
Pythonの基礎知識(1)
pythonのPrettytableモジュール
09.Python3の共通モジュール
Pythonの基盤を統合する(4)
pythonリスト(LIST)の深い理解
Python機能プログラミングについて話す
Python(6)の基盤を統合する
Python3クローラーデータクリーニング分析
栄光のパイソンキング壁紙
PythonプログラミングPycharm高速学習
Python(5)の基盤を統合する
一般的に使用されるPython3スクリプトプログラミング.md
gomokuプログラムのPython実装
Pythonマルチスレッドの深い理解
XTUプログラミングPythonトレーニング3
ブラックハットプログラミングアプリケーションPython2
OpenCVインストールのPythonバージョン
pythonのオブジェクト指向とは何ですか
Pythonデータサイエンス:関連分析
Pythonの9つの機能エンジニアリング手法
python描画モジュールのmatplotlib
パラメータを渡すPythonメソッド
Pythonの基盤を統合する(3)
Python共通モジュールのコレクション
Pythonクローラーアドバンストエッセンシャル|インデックス分析プラットフォームの復号化ロジック分析
pythonでのwheelの使用法
Pythonの対数法の要約
pythonバックトラッキングテンプレートの詳細な説明
Hyper-VインストールCentOS8問題の分析
Pythonプラグインメカニズムの詳細な実装
pythonシーケンスタイプの詳細な説明
pythonリストの逆トラバーサルの実装
IOU計算ケースのPython実装
魔法の方法とPythonの使用
Python変数スコープの詳細な理解
word2vec操作のPython予備実装
FMアルゴリズム分析とPython実装
Pythonは中国語の4つの車輪を処理します