亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

クラスの屬性

1. クラス內(nèi)で屬性を直接定義する

クラスの屬性を定義する もちろん、最も簡(jiǎn)単かつ直接的な方法は、クラス內(nèi)で屬性を定義することです。

class UserInfo(object):
    name='兩點(diǎn)水'

2. コンストラクターで屬性を定義する

名前は、オブジェクトの構(gòu)築時(shí)に屬性が定義されることを示しています。

class UserInfo(object):
    def __init__(self,name):
        self.name=name

3. 屬性アクセス制御

Java には、プロパティへのアクセスを制御できるパブリック (パブリック) プロパティとプライベート (プライベート) プロパティがあります。では、Python には屬性アクセス制御はあるのでしょうか?

通常、2 つのアンダースコアで始まる __private_attrs を使用して、屬性がプライベートであり、クラス外で使用したり直接アクセスしたりできないことを宣言します。クラス內(nèi)のメソッドで self.__private_attrs を使用する場(chǎng)合。

なぜ通常の狀況ではそうしか言えないのでしょうか?なぜなら、実はPythonにはプライベート屬性などの機(jī)能が用意されていないからです。ただし、Python の屬性のアクセス制御はプログラマの意識(shí)に依存します。なぜそんなことを言うのですか?次の例を見てください:

2b7f8cc7d68ea31db222e5ad19ad696.png

図をよく見てください。なぜ二重下線は実際のプライベート屬性ではないと言えるのでしょうか?次の例を見て、次の例を使用して検証してみましょう:

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
class UserInfo(object):
    def __init__(self, name, age, account):
        self.name = name
        self._age = age
        self.__account = account
    def get_account(self):
        return self.__account
if __name__ == '__main__':
    userInfo = UserInfo('兩點(diǎn)水', 23, 347073565);
    # 打印所有屬性
    print(dir(userInfo))
    # 打印構(gòu)造函數(shù)中的屬性
    print(userInfo.__dict__)
    print(userInfo.get_account())
    # 用于驗(yàn)證雙下劃線是否是真正的私有屬性
    print(userInfo._UserInfo__account)

出力結(jié)果は次のようになります:

c8042ea045950ea6cab0606f2de1873.png

學(xué)び続ける