ホームページ > バックエンド開発 > Python チュートリアル > Python のプライベート プロパティを説明する例

Python のプライベート プロパティを説明する例

WBOY
リリース: 2016-06-16 08:42:44
オリジナル
1012 人が閲覧しました

Python では、次の例のように、属性変数名の前に二重アンダースコアを追加することで、属性をプライベート属性として定義できます。

コードをコピー コードは次のとおりです:
#! エンコーディング=UTF-8

クラス A:
Def __init__(self):

#プライベート プロパティを定義する
self.__name = "王武"

# 共通属性定義
self.age = 19

a = A()

#通常の出力
a.ageを印刷

# 属性が見つからないことを示すプロンプト
a.__name
を出力します
実行出力:

コードをコピー コードは次のとおりです:
トレースバック (最後の呼び出し):
ファイル「C:UsersleeDocumentsAptana Studio 3 Workspacetestaa.py」、19 行目、
a.__name
を出力します AttributeError: インスタンスには属性 '__name'
がありません
プライベート属性 __name にアクセスすると、実際には、権限などを求めるプロンプトではなく、属性メンバーが見つからないというプロンプトが表示されるため、次のように記述してもエラーは報告されません:

コードをコピー コードは次のとおりです:
#! エンコーディング=UTF-8

クラス A:
Def __init__(self):

#プライベート プロパティを定義する
self.__name = "王武"

# 共通属性定義
self.age = 19


a = A()

a.__name = "リシ"
a.__name
を出力します
実行結果:
1
リシ
Python では、継承したとしても、次のようなプライベート変数に相互にアクセスすることはできません。

コードをコピー コードは次のとおりです: #! エンコーディング=UTF-8

クラス A:
Def __init__(self):

#プライベート プロパティを定義する
self.__name = "王武"

# 共通属性定義
self.age = 19


クラス B(A):
定義名(自分):
self.__name
を印刷します

b = B()
b.sayName()


実行結果:

コードをコピー コードは次のとおりです: トレースバック (最後の呼び出し):
ファイル「C:UsersleeDocumentsAptana Studio 3 Workspacetestaa.py」、19 行目、
b.sayName()
ファイル「C:UsersleeDocumentsAptana Studio 3 Workspacetestaa.py」、15 行目、sayName
self.__name
を印刷します AttributeError: B インスタンスには属性 '_B__name'
がありません

または、親クラスは次のようなサブクラスのプライベート プロパティにアクセスできません:

コードをコピー コードは次のとおりです: #! エンコーディング=UTF-8

クラス A:
定義(自分自身):
print self.name
自分自身を印刷します。__年齢


クラス B(A):
Def __init__(self):
self.name = "王武"
自分自身.__年齢 = 20

b = B()
b.say()


実行結果:

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

王武
トレースバック (最後の呼び出し):
  ファイル「C:UsersleeDocumentsAptana Studio 3 Workspacetestaa.py」、15 行目、
    b.say()
  ファイル「C:UsersleeDocumentsAptana Studio 3 Workspacetestaa.py」の 6 行目、たとえば
    自分自身を印刷します。__年齢
AttributeError: B インスタンスには属性 '_A__age' がありません
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート