Pythonの基礎学習入門
Pythonでは、最初の文字が大文字の名前はクラスを指します。このクラスを空白から作成しているため、このクラス定義の大括弧は空です。このクラスの機能を説明する docstring を作成しました。クラス内の関数は メソッドと呼ばれます。
Student クラスを例に挙げます。Python では、クラスの定義はクラス キーワードによって行われます:
class Student(object): pass |
クラスの後には、クラス名。つまり Student です。クラス名は通常、大文字で始まり、その後に (オブジェクト) が続き、クラスがどのクラスから継承されているかを示します。通常、適切な継承クラスがない場合は、オブジェクト クラスが使用されます。これは、すべての継承クラスが最終的に行うことになります。
9.1.1 クラスの作成
class Student(object): def __init__(self, name, core): self.name = name self.score = スコア |
1. メソッド __init__() は、新しいインスタンスが作成されたときに Python が自動的に実行する特別なメソッドです。先頭と末尾に 2 つのアンダースコア があります。これは、Python のデフォルトのメソッドと通常のメソッドの間で名前の競合を避けるために設計された規則です。このメソッドの定義では、 仮パラメータ self が必須であり、他の仮パラメータ の前に配置する必要があります。
2. クラスに関連付けられた各メソッド呼び出しは、インスタンス自体への参照である実際のパラメータ self を自動的に渡し、インスタンスがクラス内のプロパティやメソッドにアクセスできるようにします。 self は自動的に渡されるため、渡す必要はありません。
3. self というプレフィックスが付いた変数は、クラス内のすべてのメソッドで使用でき、クラスの任意のインスタンスを通じてこれらの変数にアクセスすることもできます。
4.self.name= name このように、インスタンスを通じてアクセスできる変数をプロパティと呼びます
5. オブジェクト指向プログラミングの重要な機能は、データのカプセル化です。クラス内のデータにアクセスする関数を直接定義して、「データ」をカプセル化できます。データをカプセル化するこれらの関数は、Student クラス自体に関連付けられており、これをクラスのメソッドと呼びます。
9.1.2 クラスに基づいてインスタンスを作成する
通常、大文字の名前 (Dog など) は次のように考えることができます。参照するのはクラスであり、小文字の名前 (my_dog など) はクラスから作成されたインスタンスを参照します。
1. インスタンスの属性にアクセスするには、ピリオド表記を使用できます。my_dog の属性名の値にアクセスするために次のコードを書きました。
my_dog.name
ピリオド表記は Python で非常に一般的に使用されます。この構文は、Python が属性の値を学習する方法を示しています。
2. Dog クラスに基づいてインスタンスを作成した後、ピリオド表記を使用して Dog クラスで定義された任意のメソッドを呼び出すことができます。
3. 必要に応じて、クラスに基づいて任意の数のインスタンスを作成できます。
9.2 クラスとインスタンスの使用
1. 実行する必要がある重要なタスクは、インスタンスのプロパティを変更することです。インスタンスのプロパティを直接変更することも、特定の方法でプロパティを変更するメソッドを作成することもできます。
2. クラスはインスタンスを作成するためのテンプレートであり、インスタンスは各インスタンスが所有するデータは互いに独立しており、相互に影響しません。メソッドは通常の関数とは異なり、インスタンスにバインドされています。インスタンスのデータに直接アクセスします。インスタンスのメソッドを呼び出すことで、オブジェクト内のデータを直接操作しますが、メソッド内の実装の詳細を知る必要はありません。静的言語とは異なり、Python では任意のデータをインスタンス変数にバインドできます。つまり、2 つのインスタンス変数は、同じクラスの異なるインスタンスであっても、異なる変数名を持つことができます。
9.2.1 クラスの初期値を設定する
クラス内のすべての属性には、値が 0 または空の文字列であっても、初期値が必要です。デフォルト値を設定する場合など、場合によっては、属性に対してそのような初期値を指定する場合、初期値を提供する仮パラメータを含める必要はありません。価値。
クラス属性である属性をクラス内で直接定義します:
class Student(object): name = 'Student' |
プログラムを作成するときは、インスタンス属性とクラス属性に同じ名前を使用しないでください。同じ名前のインスタンス属性はクラス属性をブロックしますが、インスタンス属性を削除して同じ名前を再度使用すると、次のことが可能になります。 access はクラス属性になります。
9.2.2 属性の値を変更する
属性の値は 3 つの異なる方法で変更できます:
1. インスタンスを通じて直接変更する; 2. メソッドを通じて設定する
3. インクリメントするメソッドを通じて (特定の値を増加します)。
9.2.3 アクセス制限
1. クラス内にはプロパティとメソッドを含めることができ、外部コードはインスタンス変数のメソッドを直接呼び出すことでデータを操作できるため、複雑な内部ロジックが隠蔽されます。
2. 内部属性が外部からアクセスされないようにしたい場合は、属性名の前に 2 つのアンダースコア __ を追加できます。 Python では、インスタンスの変数名が __ で始まる場合、プライベート変数 ( private. )、内部からのみアクセスでき、外部からはアクセスできません。
def __init__(self, name, スコア): self.__name = name self.__score = スコア def print_s core(self): print('%s: %s' % (self.__name, self.__score)) |
>>> bart.__name 最新の最後の呼び出し ): ファイル " AttributeError: 'Student' オブジェクトには属性 '__name' がありません |
... def get_name(self): return self.__name def get_score(self): return self.__score |
... def set_score(self, core): self.__score = core |
... def set_score(self, core): if 0 < ;= スコア Else: Raise Valueerror ('Bad Score') 7. Python では、__xxx__ に似た変数名、つまり二重アンダースコアで始まり二重アンダースコアで終わる特殊変数は、直接アクセスできる特殊変数であり、プライベート変数ではないことに注意してください。 __name__ や __score__ などの変数名は使用できません。場合によっては、_name などのアンダースコアで始まるインスタンス変数名が表示されますが、そのようなインスタンス変数は外部からアクセスできます。ただし、このような変数が表示される場合は、「アクセスできますが、どうぞ。」という意味になります。私をプライベート変数として扱い、自由にアクセスしないでください。」 8. 二重アンダースコアで始まるインスタンス変数は、必ずしも外部からアクセスできないわけではありません。 __name に直接アクセスできない理由は、Python インタープリターが外部で __name 変数を _Student__name に変更するためです。そのため、__name 変数には _Student__name を介して引き続きアクセスできます。 9.3 継承 1. クラスが別のクラスの特別なバージョンに似ている場合、継承を使用できます。クラスが別のクラスを継承すると、他のクラスのすべてのプロパティとメソッドが自動的に取得されます。元のクラスは親クラス、新しいクラスは子クラスです。 2. サブクラスは親クラスの属性とメソッドをすべて継承し、独自の属性とメソッドを定義することもできます。 OOP プログラミングでは、クラスを定義するときに、既存のクラスを継承することができます。新しいクラスはサブクラス (Subclass) と呼ばれ、継承されたクラスは基本クラス、親クラス、またはスーパークラスと呼ばれます。クラス)。
super()特別関数は、Pythonが親クラスとサブクラスを並列接続するのに役立ちます。親クラスは、スーパーの語源であるスーパー クラスとも呼ばれます。 9.3.2 サブクラスのメソッドと属性を定義する クラスをクラスから継承させます。サブクラスと親クラスを区別するプロパティとメソッドを追加できます。 9.3.3 親クラスの書き換え 親クラスに対応するメソッドは、サブクラスのニーズを満たさない場合にのみ書き換えることができます。サブクラスの特性を記述するために、新しいメソッドをサブクラスに追加できます。親カテゴリの最悪のものを取り除き、最良のものを採用します。 9.3.4 ポリモーフィズム 1. サブクラスと親クラスの両方に同じメソッドが存在する場合、コードの実行中は常にサブクラスのメソッドが親クラスのメソッドをオーバーライドするといいます。と呼ばれます。このようにして、継承のもう 1 つの利点、ポリモーフィズムを獲得します 2. したがって、継承関係では、インスタンスのデータ型がサブクラスの場合、そのデータ型も親クラスとみなすことができます。ただし、その逆は当てはまりません。 3. ポリモーフィズムの利点は、Dog、Cat、Tortoise... を渡す必要がある場合、Dog、Cat、Tortoise... はすべて Animal タイプであるため、Animal タイプを受け取るだけで済むことです。 、動物の種類に応じて操作できます。 Animal 型には run() メソッドがあるため、渡された型は、Animal クラスまたはサブクラスである限り、実際の型の run() メソッドを自動的に呼び出します。これがポリモーフィズムの意味です。 4. 変数の場合、それが Animal 型であることだけを知る必要があり、そのサブタイプを正確に知らなくても、安全に run() メソッドを呼び出すことができ、呼び出される特定の run() メソッドは Animal、Dog 、 Cat または Tortoise オブジェクト。実行時のオブジェクトの正確な型によって決定されます。これがポリモーフィズムの真の力です。詳細に関係なく、呼び出し元は呼び出しのみを考慮し、Animal の新しいサブクラスを追加するだけです。元のコードがどのように呼び出されたかに関係なく、 run( ) メソッドが正しく記述されていることを確認してください。これは有名な「オープンとクローズ」の原則です:
class Student(object): def __init__(self, name):
def __iter__(self):return self # インスタンス自体は反復オブジェクトなので、それ自体を返します
...
|
以上がPythonの基礎学習入門の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









PHPとPythonには独自の利点と短所があり、選択はプロジェクトのニーズと個人的な好みに依存します。 1.PHPは、大規模なWebアプリケーションの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンスと機械学習の分野を支配しています。

Pytorch GPUアクセラレーションを有効にすることで、CentOSシステムでは、PytorchのCUDA、CUDNN、およびGPUバージョンのインストールが必要です。次の手順では、プロセスをガイドします。CUDAおよびCUDNNのインストールでは、CUDAバージョンの互換性が決定されます。NVIDIA-SMIコマンドを使用して、NVIDIAグラフィックスカードでサポートされているCUDAバージョンを表示します。たとえば、MX450グラフィックカードはCUDA11.1以上をサポートする場合があります。 cudatoolkitのダウンロードとインストール:nvidiacudatoolkitの公式Webサイトにアクセスし、グラフィックカードでサポートされている最高のCUDAバージョンに従って、対応するバージョンをダウンロードしてインストールします。 cudnnライブラリをインストールする:

PythonとJavaScriptには、コミュニティ、ライブラリ、リソースの観点から、独自の利点と短所があります。 1)Pythonコミュニティはフレンドリーで初心者に適していますが、フロントエンドの開発リソースはJavaScriptほど豊富ではありません。 2)Pythonはデータサイエンスおよび機械学習ライブラリで強力ですが、JavaScriptはフロントエンド開発ライブラリとフレームワークで優れています。 3)どちらも豊富な学習リソースを持っていますが、Pythonは公式文書から始めるのに適していますが、JavaScriptはMDNWebDocsにより優れています。選択は、プロジェクトのニーズと個人的な関心に基づいている必要があります。

DockerはLinuxカーネル機能を使用して、効率的で孤立したアプリケーションランニング環境を提供します。その作業原則は次のとおりです。1。ミラーは、アプリケーションを実行するために必要なすべてを含む読み取り専用テンプレートとして使用されます。 2。ユニオンファイルシステム(UnionFS)は、違いを保存するだけで、スペースを節約し、高速化する複数のファイルシステムをスタックします。 3.デーモンはミラーとコンテナを管理し、クライアントはそれらをインタラクションに使用します。 4。名前空間とcgroupsは、コンテナの分離とリソースの制限を実装します。 5.複数のネットワークモードは、コンテナの相互接続をサポートします。これらのコア概念を理解することによってのみ、Dockerをよりよく利用できます。

MINIOオブジェクトストレージ:CENTOSシステムの下での高性能展開Minioは、Amazons3と互換性のあるGO言語に基づいて開発された高性能の分散オブジェクトストレージシステムです。 Java、Python、JavaScript、Goなど、さまざまなクライアント言語をサポートしています。この記事では、CentosシステムへのMinioのインストールと互換性を簡単に紹介します。 Centosバージョンの互換性Minioは、Centos7.9を含むがこれらに限定されない複数のCentosバージョンで検証されています。

Pytorchの分散トレーニングでは、Centosシステムでトレーニングには次の手順が必要です。Pytorchのインストール:PythonとPipがCentosシステムにインストールされていることです。 CUDAバージョンに応じて、Pytorchの公式Webサイトから適切なインストールコマンドを入手してください。 CPUのみのトレーニングには、次のコマンドを使用できます。PipinstalltorchtorchtorchvisionTorchaudioGPUサポートが必要な場合は、CUDAとCUDNNの対応するバージョンがインストールされ、インストールに対応するPytorchバージョンを使用してください。分散環境構成:分散トレーニングには、通常、複数のマシンまたは単一マシンの複数GPUが必要です。場所

PytorchをCentosシステムにインストールする場合、適切なバージョンを慎重に選択し、次の重要な要因を検討する必要があります。1。システム環境互換性:オペレーティングシステム:Centos7以上を使用することをお勧めします。 Cuda and Cudnn:PytorchバージョンとCudaバージョンは密接に関連しています。たとえば、pytorch1.9.0にはcuda11.1が必要ですが、pytorch2.0.1にはcuda11.3が必要です。 CUDNNバージョンは、CUDAバージョンとも一致する必要があります。 Pytorchバージョンを選択する前に、互換性のあるCUDAおよびCUDNNバージョンがインストールされていることを確認してください。 Pythonバージョン:Pytorch公式支店

NGINXのインストールをインストールするには、次の手順に従う必要があります。開発ツール、PCRE-Devel、OpenSSL-Develなどの依存関係のインストール。 nginxソースコードパッケージをダウンロードし、それを解凍してコンパイルしてインストールし、/usr/local/nginxとしてインストールパスを指定します。 nginxユーザーとユーザーグループを作成し、アクセス許可を設定します。構成ファイルnginx.confを変更し、リスニングポートとドメイン名/IPアドレスを構成します。 nginxサービスを開始します。依存関係の問題、ポート競合、構成ファイルエラーなど、一般的なエラーに注意する必要があります。パフォーマンスの最適化は、キャッシュをオンにしたり、ワーカープロセスの数を調整するなど、特定の状況に応じて調整する必要があります。
