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

類別的屬性

1、直接在類別中定義屬性

定義類別的屬性,當(dāng)然最簡(jiǎn)單、最直接的就是在類別中定義,例如:

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

2、在建構(gòu)函式中定義屬性

故名思議,就是在建構(gòu)物件的時(shí)候,對(duì)屬性進(jìn)行定義。

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

3、屬性的存取控制

在 Java 中,有 public (公共)屬性 和 private (私有)屬性,這可以對(duì)屬性進(jìn)行存取控制。那麼在 Python 中有沒(méi)有屬性的存取控制呢?

一般情況下,我們會(huì)使用 __private_attrs 兩個(gè)底線開(kāi)頭,宣告該屬性為私有,不能在類別地外部被使用或直接存取。在類別內(nèi)部的方法中使用時(shí) self.__private_attrs。

為什麼只能說(shuō)一般情況下呢?因?yàn)閷?shí)際上, Python 中是沒(méi)有提供私有屬性等功能的。但是 Python 對(duì)屬性的存取控制是靠程式設(shè)計(jì)師自覺(jué)的。為什麼這麼說(shuō)呢?看看下面的範(fàn)例:

2b7f8cc7d68ea31db222e5ad19ad696.png

仔細(xì)看圖片,為什麼說(shuō)雙底線不是真正的私有屬性呢?我們看下面的例子,用下面的例子來(lái)驗(yàn)證:

#!/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

繼續(xù)學(xué)習(xí)
||
提交重置程式碼