欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python屬性私有化詳解

 更新時間:2023年02月08日 10:13:43   作者:HaiFan.  
私有化是為了實現(xiàn)更好的封裝形式。能隱藏屬性,不被隨意修改。以前置雙下劃線__屬性/方法名定義,但是結(jié)尾不能是雙下劃線。如果不讓某些屬性在類外部被隨意更改,可設(shè)置成私有屬性。在類定義的內(nèi)部可以訪問

前言

在做程序的過程中,有時候程序猿不想讓外人動一些值,這個時候,就可以考慮把一些變量進行私有化

__屬性:就是將屬性私有化,訪問范圍僅僅限于類中。

私有化屬性

私有化屬性只需要以雙下劃線開頭,聲明該屬性為私有屬性即可,聲明之后就不能在類外部使用或直接訪問。

class Student:
    __age = 10
a = Student()
print(a.__age)

私有化屬性的有三個特性:

  • 不能在類外面訪問
  • 可以在類里面訪問,修改
  • 子類不能繼承私有化屬性

set和get

set是為了賦值,給私有化屬性賦值。

get是為了取值,把私有化屬性的值取出來。

class Student:
    __age = 10
    def __init__(self ,age):
        self.age = age
    # 定義公有的set方法和get方法
    def set_age(self ,age):
        self.__age = age
    def get_age(self):
        return self.__age
a = Student('100')
print(a.get_age())
a.set_age(1000)
print(a.get_age())

私有化好處:

隱藏屬性不被外界隨意修改(在set里面加一些判斷,防止被隨意修改)

也可以修改,通過函數(shù)完成

def setXXX(self,xxx):
    篩選賦值內(nèi)容
    if 條件:
        賦值
    else:
        不賦值

如果想獲取具體的某一個屬性,使用get函數(shù)來完成

def getXXX(self):
    return 要返回的某一個屬性

通過set和get函數(shù)即可完成對私有化屬性的一些操作。

裝飾器@property

class Stu:
    def __init__(self,name,age):
        self.name = name
        self.__age = age
    def set_age(self,age):
        if age > 0 and age < 100:
            self.__age = age
        else:
            print('不在規(guī)定范圍內(nèi)')
    def get_age(self):
        return self.__age
    def __str__(self):
        return 'name: {} \nage:{}'.format(self.name,self.__age)
a = Stu('lisan',20)
a.name = 'wangwu'
print(a.name)
a.set_age(30)
print(a.get_age())

當我想訪問私有屬性的時候,只能通過get和set函數(shù)來訪問。

通過裝飾器,就可以讓私有屬性當作屬性一樣去調(diào)用。

class Stu:
    def __init__(self,name,age):
        self.name = name
        self.__age = age
    @property
    def age(self):
        return self.__age
    @age.setter
    def age(self,age):
        self.__age = age
    def __str__(self):
        return 'name: {} \nage:{}'.format(self.name,self.__age)
a = Stu('lisan',20)
a.age = 90
print(a)
a.age = 40
print(a)

到此這篇關(guān)于Python屬性私有化詳解的文章就介紹到這了,更多相關(guān)Python私有化內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:

相關(guān)文章

  • TensorFlow模型保存/載入的兩種方法

    TensorFlow模型保存/載入的兩種方法

    這篇文章主要為大家詳細介紹了TensorFlow 模型保存/載入的兩種方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • python實現(xiàn)按任意鍵繼續(xù)執(zhí)行程序

    python實現(xiàn)按任意鍵繼續(xù)執(zhí)行程序

    本文給大家分享的是如何使用Python腳本實現(xiàn)按任意鍵繼續(xù)執(zhí)行程序的代碼,非常的簡單實用,有需要的小伙伴可以參考下
    2016-12-12
  • Python實現(xiàn)序列化及csv文件讀取

    Python實現(xiàn)序列化及csv文件讀取

    這篇文章主要介紹了Python實現(xiàn)序列化及csv文件讀取,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-01-01
  • python__name__原理及用法詳解

    python__name__原理及用法詳解

    這篇文章主要介紹了python__name__原理及用法詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-11-11
  • Pygame Event事件模塊的詳細示例

    Pygame Event事件模塊的詳細示例

    事件是Pygame的重要模塊之一,比如鼠標點擊、鍵盤敲擊、游戲窗口移動、調(diào)整窗口大小、觸發(fā)特定的情節(jié)、退出游戲等等,本文就詳細的介紹一下具體用法,感興趣的可以了解一下
    2021-11-11
  • Python打包文件執(zhí)行報錯:ModuleNotFoundError: No module named ‘pymssql‘的解決方法

    Python打包文件執(zhí)行報錯:ModuleNotFoundError: No module 

    這篇文章給大家介紹了Python打包文件執(zhí)行報錯:ModuleNotFoundError: No module named ‘pymssql‘的解決方法,如果有遇到相同問題的朋友可以參考閱讀一下本文
    2023-10-10
  • Python表格處理模塊xlrd在Anaconda中的安裝方法

    Python表格處理模塊xlrd在Anaconda中的安裝方法

    本文介紹在Anaconda環(huán)境下,安裝Python讀取.xls格式表格文件的庫xlrd的方法,xlrd是一個用于讀取Excel文件的Python庫,本文介紹了xlrd庫的一些主要特點和功能,感興趣的朋友一起看看吧
    2024-04-04
  • OpenCV實現(xiàn)相機校正

    OpenCV實現(xiàn)相機校正

    這篇文章主要為大家詳細介紹了OpenCV實現(xiàn)相機校正,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • python開發(fā)實例之Python的Twisted框架中Deferred對象的詳細用法與實例

    python開發(fā)實例之Python的Twisted框架中Deferred對象的詳細用法與實例

    這篇文章主要介紹了python開發(fā)實例之Python的Twisted框架中Deferred對象的詳細用法與實例,需要的朋友可以參考下
    2020-03-03
  • Django數(shù)據(jù)庫遷移報錯InconsistentMigrationHistory

    Django數(shù)據(jù)庫遷移報錯InconsistentMigrationHistory

    最近在使用Django,學(xué)習(xí)了一下Django數(shù)據(jù)庫遷移,在執(zhí)行遷移命令時,突然報錯,本文就總結(jié)了一下原因,感興趣的小伙伴們可以參考一下
    2021-05-05

最新評論