ホームページ > バックエンド開発 > Python チュートリアル > Pythonのオブジェクトとオブジェクト指向技術について詳しく解説

Pythonのオブジェクトとオブジェクト指向技術について詳しく解説

WBOY
リリース: 2016-08-04 08:55:37
オリジナル
1487 人が閲覧しました

この記事の例では、Python オブジェクトとオブジェクト指向テクノロジーについて説明します。参考のために皆さんと共有してください。詳細は次のとおりです:

1 まず例を見てみましょう この章では、このサンプル プログラムについて説明します。

ファイル: fileinfo.py:

リーリー

2 from module import を使用してモジュールをインポートします

前に学習したインポート モジュールは次の構文を使用します:

インポートモジュール名

このように、このモジュールで何かを使用する必要がある場合は、モジュール名.XXX の形式を使用する必要があります。例:

リーリー
モジュール名を使用せずに名前を直接使用するとエラーになるので、次のように出力します。

リーリー
ここで、モジュールに名前をインポートするための別の構文を見てみましょう:

モジュール名インポート名から

または

を使用します

モジュール名 import * から

例:

リーリー
この方法では、モジュール名を渡さずにインポートされた名前を直接使用できます。例:

リーリー

3 クラス定義

クラスを定義するための構文:

クラスクラス名: パス

または

class クラス名 (基本クラスのリスト): パス

パスは Python のキーワードです。

何もしないことを意味します。

クラスにはクラス ドキュメントを含めることもできます。その場合は、クラス定義の最初に含める必要があります。

リーリー
クラスのコンストラクターは次のとおりです:

リーリー
ただし、正確には、このタイプのオブジェクトを作成した後に自動的に実行されるメソッドとしか考えられません。この関数が実行されると、オブジェクトは初期化されます。

例:

リーリー

ここではクラス A のコンストラクターが定義されています。そして、その中で基本クラス B のコンストラクターが呼び出されます。

Python では、派生クラスを構築するときに、基本クラスのコンストラクターが「自動的に」呼び出されないことに注意してください。必要に応じて、明示的に記述する必要があります。

すべてのクラス メソッド。最初のパラメーターはこのポインターを受け取るために使用されます。このパラメーターの通常の名前は self.です。

呼び出し時にこのパラメータを渡さないでください。自動的に追加されます。

ただし、上記のようなコンストラクターでは、基本クラスの __init() を呼び出すときに、このパラメーターを明示的に指定する必要があります。

4 クラスのインスタンス化

クラスのインスタンス化は他の言語と同様で、クラス名を関数呼び出しとして使用するだけです。他の言語には新しいものなどはありません。

クラス名(パラメータリスト) __init__ の最初のパラメータ self.

をパラメータ リストに指定する必要はありません。

例:

a = A()

クラスまたはクラスのインスタンスのドキュメントを表示するには、たとえば、 __doc__ 属性を使用します。

リーリー

インスタンスを通じてそのクラスを取得することもできます。これは、例:

です。

リーリー

クラスのインスタンスを作成した後は、ガベージ コレクションが参照カウントに基づいて未使用のオブジェクトを自動的に破棄します。
Python では、クラス データ メンバーに対する特別な宣言ステートメントはなく、代入中に「突然生成」されます。例:

リーリー
このとき、データは自動的にクラスAのメンバーとなります

その後、クラスの定義内で、クラス内でメンバー変数またはメンバー メソッドを使用する場合は、self.name を使用して修飾する必要があります。

したがって、一般的には、任意のメソッドで self.member 名に値を割り当てるだけです。
ただし、__init__ メソッドのすべてのデータ属性に初期値を割り当てることをお勧めします。

Python は関数のオーバーロードをサポートしていません。

ここでコードのインデントについて話しましょう。実際、コード ブロックに 1 文しかない場合は、改行やインデント形式を必要とせずにコロンの直後に配置できます。

6 特別なクラスメソッド

通常のメソッドとは異なり、クラスで特別なメソッドを定義した後、それらを明示的に呼び出す必要はありません。代わりに、Python は特定のタイミングでそれらを自動的に呼び出します。

データ項目を取得および設定します。

これには、クラスで __getitem__ メソッドと __setitem__ メソッドを定義する必要があります。

例: リーリー

ここで

a[1] は __getitem__ メソッドを呼び出します。これは a.__getitem__(1) と同等です。

__getitem__ メソッドに似ているのは __setitem__ です

たとえば、上記のクラス A で定義されているものは次のとおりです。

リーリー

次に、このメソッドを次のように呼び出します:

a[1] = 0、これは a.__setitem__(1, 0) の呼び出しと同等です

7 高度な特殊クラスメソッド

__getitem__ __setitem__ と同様に、次のような特別な専用関数もあります。

リーリー
この特別なメソッドは、このオブジェクトの文字列表現を表すために使用されます。

などの組み込み関数を通じて呼び出されます。

リーリー

この repr() は任意のオブジェクトに適用できます。

実際には、対話型ウィンドウで変数名を入力して Enter キーを押すだけで、変数の値が表示されます。

リーリー

2つのインスタンスselfとxが等しいかどうかを比較するために使用されます。これは次のように呼ばれます:
リーリー

这里比较 a和b是否相等. 和调用 a.cmp(b) 一样

def __len__(self): return len(self.li)

ログイン後にコピー

它用来返回对象的长度. 在使用 len(对象) 的时候会调用它.
用它可以指定一个你希望的逻辑长度值.

def __delitem__(self, key): del self.li[key]

ログイン後にコピー

在调用 del 对象[key] 时会调用这个函数.

8 类属性

类属性指的是象c++中静态成员一类的东西.

Python中也可以有类属性. 例如:

class A :
  l = [1, 2, 3]

ログイン後にコピー

可以通过类来引用(修改). 或者通过实例来引用(修改). 如:

A.l

ログイン後にコピー

a.__class__.l

ログイン後にコピー

9 私有函数

Python中也有"私有"这个概念:

私有函数不可以从它们的模块外边被调用.
私有类方法不能从它们的类外边被调用.
私有属性不能从它们的类外边被访问.

Python中只有私有和公有两种. 没有保护的概念. 而区分公有还是私有是看函数. 类方法. 类属性的名字.

私有的东西的名字以 __ 开始. (但前边说的专用方法(如__getitem__)不是私有的).

更多关于Python相关内容感兴趣的读者可查看本站专题:《Python面向对象程序设计入门与进阶教程》、《Python文件与目录操作技巧汇总》、《Python图片操作技巧总结》、《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python编码操作技巧总结》及《Python入门与进阶经典教程》

希望本文所述对大家Python程序设计有所帮助。

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