ホームページ バックエンド開発 Python チュートリアル Lao Qi から Python を学ぶ、その他の詳細

Lao Qi から Python を学ぶ、その他の詳細

Jun 16, 2016 am 08:41 AM

ここ数日間、私はさまざまなチャネルを通じて数人の友人と OOP 関連の問題について話し合いました。彼らは、Linghu Chong、Frank、Jin Jian、Xiao Feng です

OOP については人によって意見が異なります。いわゆる工学部と学術部では見解が異なります。アプリケーションの観点から、工学部の視点は推奨に値します。つまり、当面の問題を解決できる限り、内部でどのように機能するかにはあまり注意を払わないでください。しかし、学習者にとって、工学部のレベルにとどまっている場合(特に注意してください、上記の友達はすべて工学部の英雄です。彼らは単にそれを使用できるだけでなく、実際にはより高いレベルの「なしで勝つ」ことができます)トリック「トリックがあります」)、学習者は少しわかりにくいと感じるかもしれません。したがって、学習者、特に初心者は、内部的な理由をいくつか知っておく必要がありますが、内部的な理由を掘り下げるためだけにアプリケーションの目的を忘れないでください。両者の調整はまだ難しい課題のようだ。練習が深まるにつれて徐々に理解できるようになるので、心配しないでください。

以下に、MARK Lutz の「Learning Python」の「OOP in the Eyes of the Master」に基づいて、OOP を使用する一般的な理由をいくつかリストします。
•コードの再利用。これは非常に簡単です (これが OOP を使用する主な理由です)。継承をサポートすることにより、クラスではプロジェクトを毎回最初から開始するのではなく、カスタマイズを通じてプログラミングできるようになります。
•カプセル化。実装の詳細をオブジェクト インターフェイスの背後にラップすることで、コード変更によるユーザーへの影響を分離します。
•構造。クラスは新しいローカル スコープを提供し、変数名の競合を最小限に抑えます。また、実装コードを作成および検索したり、オブジェクトの状態を管理したりするための自然な場所も提供します。
●メンテナンス性。クラスは自然にコードの分解を容易にするため、冗長性を減らすことができます。クラス構造とコードの再利用がサポートされているため、一度に変更する必要があるコードのコピーは 1 つだけです。
•一貫性。クラスと継承は共通のインターフェイスを実装できます。このようにして、コードの外観と外観が統一されるだけでなく、コードのデバッグ、理解、保守が簡素化されます。
•ポリモーフィズム。ポリモーフィズムにより、コードがより柔軟になり、幅広く適用できるようになります。 (これは OOP の特性のようであり、それを使用する理由ではありません)

何はともあれ、授業はとても大切なものであり、読者は勉強する際に授業をもっと活用しなければなりません。

また、python2には先ほどのクラスに相当する「new-style」というものがあり、先ほどのクラスは「classic」種類と呼ばれます。ただし、Python3 ではそのような違いはなく、両者は統合されています。 Python2 では、この 2 つには違いがあるというだけです。このチュートリアルの基本的な部分では、新しい形式の問題についてはまだ教えていません。読者が興味がある場合は、GOOGLE で関連情報を検索することも、コースが次の段階に進むにつれてさらに学習することもできます。

バインドされたメソッドとアンバインドされたメソッド

クラス メソッドを学習したときに、クラス メソッドは関数であると述べたことをまだ覚えているかどうかを確認してください。ただし、この関数の動作は、以前に学習した関数 (self など) とは少し異なります。もちろん、その必要はありません。以下を見てみると、自己が存在しないことがわかります。メソッドは関数と同じであり、本質的に関数であるため、関数の部分を学習すると、関数はオブジェクトであるため、クラス メソッドもオブジェクトであることが明確になります。先ほども述べたように、クラスメソッドの中にはselfを持つものと持たないものがあります。区別するために、この定義はさらに行われます:
•バインドされたクラスメソッドオブジェクトがありません: self
がありません •バインドインスタンスメソッドオブジェクト:self
を使用
バインドされたインスタンス メソッド オブジェクトを呼び出します

コードをコピー コードは次のとおりです:

>>> クラス MyClass:
... def foo(self,text):
... テキストを印刷
...

次の方法でインスタンス メソッドを呼び出すことができます

コードをコピー コードは次のとおりです:

>>> a = MyClass() #クラス インスタンスを作成します
>>> a.foo('qiwsir.github.io') #インスタンス メソッドを呼び出す
qiwsir.github.io
>>> a.foo
<0xb74495ac の__main__.MyClass インスタンスの <バインドされたメソッド MyClass.foo>>

このインスタンス メソッドが呼び出されたときのデータ転送プロセスは、「クラスの書き方 2 つ目」で示されています。図は、上記の呼び出しメソッドで、インスタンス名 a が実際に self に渡されていることを示しています。バインドされたインスタンス メソッド オブジェクトを self で呼び出します。

上記の呼び出しプロセスは次のように実装することもできます:

コードをコピー コードは次のとおりです:

>>> a = MyClass()
>>> x = a.foo #インスタンス a とメソッド関数 foo をバインドします
>>>x
<0xb74495ac の__main__.MyClass インスタンスの <バインドされたメソッド MyClass.foo>>
>>> x("qiwsir.github.io")
qiwsir.github.io

上記の呼び出しでは、実際には前の呼び出しプロセスの分解アクションに相当します。つまり、インスタンス a とメソッド関数 foo をバインドし、それを x に代入します。このとき、x は単純な関数に相当し、上記のメソッドを通じてパラメータを渡すことができます。ここでインスタンスとメソッド関数をバインドする方法は、ドット演算 (object.method_function) を使用することです

非バインドクラスメソッドオブジェクトを呼び出す

いわゆるクラス メソッド オブジェクトはインスタンスを使用せず、クラスを使用してドット表記操作を実行し、メソッド関数 (ClassName.method_function) を取得します。

コードをコピー コードは次のとおりです:

>>> a = MyClass()
>>> y = MyClass.foo #ここにはクラス呼び出しはありません
>>>
<バインドされていないメソッド MyClass.foo>

このような呼び出しでは、バインドされていないメソッド オブジェクトが生成されます。ただし、次のように、呼び出し時にインスタンスを最初のパラメーターとして渡す必要があります。

コードをコピー コードは次のとおりです:
>>> y(a,"qiwsir.github.io")
qiwsir.github.io

それ以外の場合は、エラーが報告されます。エラー メッセージ

に特に注意してください。

コードをコピー コードは次のとおりです:
>>> y("qiwsir.github.io")
トレースバック (最後の呼び出し):
ファイル「」、1 行目、
TypeError: アンバウンド メソッド foo() は、MyClass インスタンスを最初の引数として呼び出してください (代わりに str インスタンスを取得します)
>>>

プログラミングの実践では、インスタンスメソッドを使用することが多くなっているように思います。

ドキュメント文字列

プログラムを書くとき、必要なテキストの説明を書かなければなりません。コードが非常に理解しやすく、特にさまざまな変数、関数、クラスなどの名前が誰でも簡単に理解できるものでなければ意味がありません。そうでない場合は、書面による指示が不可欠であることをご理解ください。

関数、クラス、またはファイルの先頭にドキュメント文字列の説明を記述します。通常は三重引用符を使用します。この方法で記述する最大の利点は、help() 関数を使用して確認できることです。

コードをコピー コードは次のとおりです:
"""これは Python のレッスンです"""
def start_func(arg):

"""これは関数です。"""
パス

クラス MyClass:

"""これは私のクラスです。"""
Def my_method(self,arg):
"""これは私の方法です。"""
パス

このような文書が必要です。

もちろん、プログラミングではコメントに「#」記号が使用される場所がたくさんあります。これは通常、パーツに注釈を付けるために使用されます。

実際には授業は終わっていませんが、この講義はここで終了です。公式の文章を読むにはさらに練習が必要です。

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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を使用してテキストファイルのZIPF配布を見つける方法 Pythonを使用してテキストファイルのZIPF配布を見つける方法 Mar 05, 2025 am 09:58 AM

このチュートリアルでは、Pythonを使用してZIPFの法則の統計的概念を処理する方法を示し、法律の処理時にPythonの読み取りおよび並べ替えの効率性を示します。 ZIPF分布という用語が何を意味するのか疑問に思うかもしれません。この用語を理解するには、まずZIPFの法律を定義する必要があります。心配しないでください、私は指示を簡素化しようとします。 ZIPFの法則 ZIPFの法則は単に意味します。大きな自然言語のコーパスでは、最も頻繁に発生する単語は、2番目の頻繁な単語のほぼ2倍の頻度で表示されます。 例を見てみましょう。アメリカ英語の茶色のコーパスを見ると、最も頻繁な言葉は「thであることに気付くでしょう。

HTMLを解析するために美しいスープを使用するにはどうすればよいですか? HTMLを解析するために美しいスープを使用するにはどうすればよいですか? Mar 10, 2025 pm 06:54 PM

この記事では、Pythonライブラリである美しいスープを使用してHTMLを解析する方法について説明します。 find()、find_all()、select()、およびget_text()などの一般的な方法は、データ抽出、多様なHTML構造とエラーの処理、および代替案(SEL

Pythonでの画像フィルタリング Pythonでの画像フィルタリング Mar 03, 2025 am 09:44 AM

ノイズの多い画像を扱うことは、特に携帯電話や低解像度のカメラの写真でよくある問題です。 このチュートリアルでは、OpenCVを使用してPythonの画像フィルタリング手法を調査して、この問題に取り組みます。 画像フィルタリング:強力なツール 画像フィルター

Pythonの並列および同時プログラミングの紹介 Pythonの並列および同時プログラミングの紹介 Mar 03, 2025 am 10:32 AM

データサイエンスと処理のお気に入りであるPythonは、高性能コンピューティングのための豊富なエコシステムを提供します。ただし、Pythonの並列プログラミングは、独自の課題を提示します。このチュートリアルでは、これらの課題を調査し、グローバルな承認に焦点を当てています

TensorflowまたはPytorchで深い学習を実行する方法は? TensorflowまたはPytorchで深い学習を実行する方法は? Mar 10, 2025 pm 06:52 PM

この記事では、深い学習のためにTensorflowとPytorchを比較しています。 関連する手順、データの準備、モデルの構築、トレーニング、評価、展開について詳しく説明しています。 特に計算グラップに関して、フレームワーク間の重要な違い

Pythonで独自のデータ構造を実装する方法 Pythonで独自のデータ構造を実装する方法 Mar 03, 2025 am 09:28 AM

このチュートリアルでは、Python 3にカスタムパイプラインデータ構造を作成し、機能を強化するためにクラスとオペレーターのオーバーロードを活用していることを示しています。 パイプラインの柔軟性は、一連の機能をデータセットに適用する能力にあります。

Pythonオブジェクトのシリアル化と脱介入:パート1 Pythonオブジェクトのシリアル化と脱介入:パート1 Mar 08, 2025 am 09:39 AM

Pythonオブジェクトのシリアル化と脱介入は、非自明のプログラムの重要な側面です。 Pythonファイルに何かを保存すると、構成ファイルを読み取る場合、またはHTTPリクエストに応答する場合、オブジェクトシリアル化と脱滑り化を行います。 ある意味では、シリアル化と脱派化は、世界で最も退屈なものです。これらすべての形式とプロトコルを気にするのは誰ですか? Pythonオブジェクトを維持またはストリーミングし、後で完全に取得したいと考えています。 これは、概念レベルで世界を見るのに最適な方法です。ただし、実用的なレベルでは、選択したシリアル化スキーム、形式、またはプロトコルは、プログラムの速度、セキュリティ、メンテナンスの自由、およびその他の側面を決定する場合があります。

Pythonの数学モジュール:統計 Pythonの数学モジュール:統計 Mar 09, 2025 am 11:40 AM

Pythonの統計モジュールは、強力なデータ統計分析機能を提供して、生物統計やビジネス分析などのデータの全体的な特性を迅速に理解できるようにします。データポイントを1つずつ見る代わりに、平均や分散などの統計を見て、無視される可能性のある元のデータの傾向と機能を発見し、大きなデータセットをより簡単かつ効果的に比較してください。 このチュートリアルでは、平均を計算し、データセットの分散の程度を測定する方法を説明します。特に明記しない限り、このモジュールのすべての関数は、単に平均を合計するのではなく、平均()関数の計算をサポートします。 浮動小数点数も使用できます。 ランダムをインポートします インポート統計 fractiから

See all articles