パイソン - オブジェクト指向プログラミング(プロパティ、メソッド)

まず、プロパティ

また、オブジェクト(データメンバ)のデータメンバーとして知られているプロパティ(属性)。

あなたがオブジェクトのプロパティを指すようにしたい場合は、フォーマットを使用することができます。

  object.attribute

私有財産と公共財産:プロパティに分かれています。

私有財産は、2つのアンダースコア(__)で始まるで、民間メンバーは、直接クラスの外にアクセスすることはできません。

Pythonはプライベートメンバーにアクセスするための特別な方法を提供します。

  __ ._オブジェクト名のプライベートプロパティ名クラス名(オブジェクトクラスのインスタンスのオブジェクト名)

パブリックプロパティにアクセスすることができるいずれかのクラスの中から外部プログラムで使用することができます。

__ __ドキュメント、__ __モジュール、__ base__:特別なクラスのPythonのような組み込みのプロパティが、あります。

 

第二に、この方法

この方法は、クラスで定義された関数です。

クラスメソッドと正常な機能は、唯一の違いです。

彼らは通常、自己命名されたパラメータの前に余分を持っている必要があります。

しかし、それは他の識別子で置き換えることができるならば自己は、Pythonのキーワードではありませんまた、通常実行されています。

ビルトインクラスのメソッド:最初と最後には2つの下線です。

__init __(自己):自動的にメソッドを呼び出しますクラスのインスタンスを作成するクラスのコンストラクタ。

__del __(自己):クラスデストラクタ、自動的に、オブジェクトを削除します。

__str __(自己):に表示されるオブジェクトは時に文字列型をどのように発生するかを設定するために使用。

 

---------------------------# 
プロパティとメソッド
#----------------- ----------
#定義
クラスProjectGroupを:
「」「」「これはクラスのプロジェクトチームである」
GROUP_NUMBER = 0#属性クラス(クラス変数)

コンストラクタ#クラス、ときインスタンスを作成します。それが呼び出される
__init __(自己、PROJECT_NAME =なし、メンバー=なし、dev_time =なし)DEF:
self.project_name =属性(インスタンス変数)PROJECT_NAME#オブジェクト
self.membersの=のメンバーは#パブリックプロパティ、クラス外のオブジェクトによって実行することができますアクセス-プロジェクトメンバー
の自己.__ dev_time = dev_time#私有財産は、クラスが外部に直接アクセスすることはできません-プロジェクト・サイクル
。ProjectGroup.group_number + 1 =

#のデストラクタ方法、時にクラスオブジェクト(クラスのインスタンスを削除するには、デルの文)を自動的に削除が行わ
__del __ DEF(セルフ):
ProjectGroup.group_number - = 1つの
印刷( "破壊します!")

デフ__str __(自己):#組み込み関数、表示文字列型がどのように表示されるにオブジェクトを設定するために
、戻りself.project_nameの

DEFのprint_members(セルフ):
印刷(self.members)

DEF get_dev_time(セルフ):
自己.__ dev_time番号による返品公共のメンバーは、さまざまな方法プライベートメンバ変数にアクセスするための

DEF set_dev_time(セルフ、dev_timeを):
自己.__ dev_time = dev_time

DEF __mod_budget(自己を、予算で):#プライベートメソッド、唯一のクラス内でアクセス可能
self.budget =予算で
(「プロジェクト予算の印刷を設定します。 」、self.budget)

予算でDEF set_budget(セルフ):
自己予算で.__ mod_budget()#プライベートメソッドを呼び出す

クラスメソッドの宣言、@classmethodの#デコレータを
デフclass_get_number(CLS)を:#クラスのメソッドは、インスタンス変数にアクセスすることはできません
プリント(「クラスメソッド:」、 cls.group_number)#CLSは、 外部コール場合クラス自体を表す、値を渡す必要がない

@staticmethod#デコレータは、静的メソッドの宣言
#静的メソッド:デフstatic_get_number()
プリント(「静的メソッド。 「ProjectGroup.group_number)インスタンス変数へのアクセスができない同じ#
#印刷(」静的メソッドのメソッドを:」、ProjectGroup.project_name)#印刷エラーは、変数がメンバーにアクセスすることができない(インスタンス変数クラスのメソッド)


#オブジェクトが生成されたインスタンス
project_group1 = ProjectGroup (「RFIDプロジェクトグループ」)
クラス、プロパティへのアクセスパブリックオブジェクトの外#
project_group1.membersの= [「INTEGRATED伝統的な」、「Wenjing」、「タオ」、「日翔」]
属性#アクセスクラス(クラス名またはオブジェクト名アクセス)
印刷(「プロジェクトチームの現在の数:」ProjectGroup.group_number)
印刷(「オブジェクト・アクセス使用して番号:」project_group1.group_number)

印刷(「現在のプロジェクトグループの名前を:」project_group1)

#プライベートメンバは、パブリックメンバ変数値法によって提供される
project_group1.set_dev_time(90)
印刷(「プロジェクト開発サイクルは次のとおりです。{}日」.format(project_group1._ProjectGroup__dev_time))

#200,000のプロジェクトの予算設定、プライベートメソッドpublicメソッドを呼び出す
project_group1.set_budget(200000)

クラス名/オブジェクトによって#はクラスメソッドを呼び出します
ProjectGroup.class_get_number()
オブジェクト/クラス名静的メソッドを通じて#コール
project_group1.static_get_number()

オブジェクトをインスタンス#
project_group2 = ProjectGroup(「データ交換プロジェクトチーム」、[「劉」、「Luqian」、「スーパー庚「]、120)
プリント( "番号group_number2:"、ProjectGroup.group_number)

オブジェクトを削除し、自動デストラクタ
project_group3 = ProjectGroup()
プリント( "GROUP_NUMBER:"、ProjectGroup.group_number)
project_group4 ProjectGroup =()#あたりの作成インスタンス化されたオブジェクト、GROUP_NUMBERが追加されます1つの。
印刷( "番号GROUP_NUMBER:"、ProjectGroup.group_number)
デルproject_group3
印刷( "GROUP_NUMBER:」、ProjectGroup.group_number)

#クラス構築されたプロパティ
#は、文字列クラスのドキュメントを返します
:(、ProjectGroup .__ doc__内の例題"ProjectGroup .__ doc__内の例題")印刷を

#は使用してオブジェクトを作成するには、このクラスの名前を返します
印刷(project_group1 .__ class__)
印刷(project_group2 .__ class__)

辞書に#をこれは、属性の形式でオブジェクトを返し、(クラスの属性を含まない)属性値を
印刷(project_group1 .__ dict__にマジック)
印刷(project_group2 .__ dict__にマジック)

#含んでいるモジュールのクラス名を返します
印刷(ProjectGroup .__ module__)

は、すべての親クラスを返します。名前(だけ前の親に戻す)、基本クラスとしても知られている
印刷(ProjectGroup .__ bases__)

は現在のモジュールの名前を返します
印刷(「現在のモジュール名:」、__name__を)

おすすめ

転載: www.cnblogs.com/Teachertao/p/11221316.html