1. 程式人生 > >python 中面向物件的封裝

python 中面向物件的封裝

面向物件_封裝
面向物件的核心: 類和物件
    類:型別,資料型別 從物件中抽取出來的一個抽象概念
    定義某種型別的特徵和行為操作
    物件:通過某個指定的類創建出來的具體屬性和具體行為的實體
    一個類可以建立多個物件,多個物件可以屬於一個型別
類操作語法:
class 型別名稱(駝峰命名法):
    def__init___(self,name[屬性引數列表]):
       self.name = name
    def 方法名稱(self, 方法引數列表)

面向物件的封裝:
    1.資料封裝:將程式中需要的資料
    按照統一的格式封裝在型別的內部,通過該型別的物件
    包裝使用資料!
    2.行為封裝[方法]
    3.屬性封裝(重點)
       物件的屬性操作,必須通過方法操作
    通過方法限制屬性的訪問,提高屬性的安全性
        通過專案的規範,規定了一個下劃線開頭的屬性
        是屬於物件的私有屬性,不能在型別的外部呼叫

    通過語法限制,讓屬性私有化,不讓外界直接訪問
        python中規定的,兩個下劃線開頭的屬性是私有的
        語法上外界不能直接訪問

總結封裝:
        在python中,封裝按照如下步驟進行操作
        (1) 定義型別,所有屬性私有化[雙下劃線開頭]
        (2) 每個屬性提供set/get方法[賦值/取值]
            命名規範:賦值:set_屬性名稱(..)
                    取值:get_屬性名稱(..)
        (3) 在get/set方法中,提供限制條件!

封裝高階操作
    儘管屬性資料已經被封裝,但是操作過程[通過方法操作屬性]直接暴露給開發人員
    本來操作一個屬性~就是一個變數的賦值取值;轉變成方法操作之後,已經失去了屬性的概念!
python提供了一種特殊的操作,可以完成將方法轉換成屬性訪問的操作模式
@property新增獲取屬性的方法,方法的操作模式更改為變數操作模式

@方法.setter 新增設定屬性的方法,方法的操作模式更改為變數操作模式
class User:
    ....
    @property
    def name(self):
        return self.__name

    @name.setter
    def name(self, name)
        self.__name = name
方法二次封裝
class User:
    def __init__(self, name):
        self.__name = name

    def get_name(self):
        return self.__name

    def set_name(self, name):
        self.__name = name

    def del_name(self):
        del self.__name

    # 訪問屬性的中間變數,通過變數name可以間接操作屬性__name
    name = property(get_name, set_name, del_name)

屬性的擴充套件和限制
python中物件的屬性可以通過物件進行自由擴充套件
但是自由擴充套件會導致程式碼的可讀性和操作性的下降,所以通過
指定的限制條件規範擴充套件屬性的定義,完成定義和擴充套件的平衡

class User:
    __slots__ = ["__name", "age", "gender"]

相關推薦

python 面向物件封裝

面向物件_封裝 面向物件的核心: 類和物件     類:型別,資料型別 從物件中抽取出來的一個抽象概念     定義某種型別的特徵和行為操作     物件:通過某個指定的類創建出來的具體屬性和具體行為的實體     一個類可以建立多個物件,多個物件可以屬於一個型別 類操作語法

Python面向物件的概念

1、語言的分類 1)面向機器 抽象成機器指令,機器容易理解。代表:組合語言。 2)面向過程 做一件事,排除步驟,第一步做什麼,第二步做什麼,如果出現A問題,做什麼處理,出現b問題,做什麼處理。問題規模小,步驟化,按部就班處理。  代表:c語言。 (按照步驟進行處理的。) 面向物件和麵向過

總結Python面向物件的特殊方法

當你從萌新小白到有點程式設計概念的時候或許就會有疑問,為什麼print()就可以打印出東西,為什麼生成器就可以next()進行迭代,這些都是因為類本身實現了一些特殊方法,我們來總結一下: 1.如果把一個類的例項變成str,就需要實現特殊方法__str__( ): str:用於顯示給使用者 r

python面向物件三大特徵

面向物件三大特徵    1.封裝:根據職責將屬性和方法封裝到一個抽象的類中    2.繼承:實現程式碼的重用,相同的程式碼不需要重複的寫    3.多型:以封裝和繼承為前提,不同的子類物件呼叫相同的方法,產生不同的執行結果 一、封裝 什麼是封裝: 1.封裝是面向物件程式

python面向物件元類的自定義用法

面向物件中的常用方法 1.instance 和 issubclass instance :判斷兩個物件是不是一類 issubclass :判斷某個類是不是另一個類的子類 #兩個常用方法的使用 class Person: pass ​ class Student(Person):

關於Python面向物件的理解

1、什麼是面向物件 面向物件的程式設計的核心是物件(上帝式思維),要理解物件是什麼,就要把自己當成上帝,上帝眼裡世間存在的萬物皆物件,不存在的也可以創造出來。物件是特徵和技能的結合,其中特徵和技能分別對應物件的資料屬性和方法屬性。 2、優缺點 優點是: 便於維護,複用性強,具有很

我對Python面向物件的一些總結

      回過頭來再看看關於面向物件的基礎知識,然後做個總結。也算是重新梳理一遍吧。首先,總的來說面向物件包含封裝、繼承、多型三個大特性。這部分內容主要總結的是封裝。        我所理解的封裝其實就是打包起來,或者說是隱藏起來的意思,通過封裝將類和物件有機地統一起來,

python day19--面向物件,藉口,封裝

#1.介面類,物件類。規範類中方法的統一。 # 第一版:三個類,每個類中有相同的方法 # class Alipay: # def __init__(self,money): # self.money=money # def pay(self): # pr

python面向物件編制之封裝

1.什麼是封裝    封:屬性對外是隱藏的,單對內是開放的    裝:申請一個名稱空間,往裡裝入一系列名字/屬性2.為什麼要封裝    封裝資料屬性的目的       首先定義屬性的目的就是為了給類外部的使用而使用            隱藏之後是為了不讓外部直接使用,需要內

python _ 面向物件類及其屬性方法

一、面向物件中的內建方法 1、del方法: 在python中 當使用類名()建立物件時,為物件分配完空間後,會自動呼叫__init__方法 當一個物件被從記憶體中銷燬前,會自動呼叫__del__方法,這裡是兩個下劃線del再接著兩個下劃線 2、del案

python面向物件-------封裝

說到封裝我們來先了解下定義:   指的是隱藏類的細節實現,讓使用者不關心這個細節   目的是讓使用者儘可能的減少對例項變數(屬性,方法)進行操作      上面這兩句怎麼理解呢,好比你買了輛車,你能操作的東西只有油門,剎車,方向盤之類的,實際上車的實現可能有上萬    

python面向物件-封裝-property-介面-抽象-鴨子型別-03

封裝 什麼是封裝: # 將複雜的醜陋的隱私的細節隱藏到內部,對外提供簡單的使用介面 或 # 對外隱藏內部實現細節,並提供訪問的介面 為什麼需要封裝 1.為了保證關鍵資料的安全性 2.對外部隱藏內部的實現細節,隔離複雜度 什麼時候需要封裝: # 當有一些資料不希望外界可以直接修改時,# 當有一些函式不希望給

Python面向對象的編程

python中面向對象的編程Python面向對象的編程1概述(1)面向對象編程 面向對象的編程是利用“類”和“對象”來創建各種模型來實現對真實世界的描述,使用面向對象編程的原因一方面是因為它可以使程序的維護和擴展變得更簡單,並且可以大大提高程序開發效率,另外,基於面向對象的程序可以使它人更加容易理解你的代碼

python 面向對象的概念

sim 分支 display ica 3.0 輸出 全局 record 就會 原文 域和作用空間 本地域,函數域(nonlocal)和 全局域(global) def scope_test(): def do_local(): spam = "l

一文看懂Python面向物件程式設計,這是真正的一篇非常棒的教程!

  之前在網路上看了很多關於面向物件的程式設計詳解,還是不夠過癮,所以決定自己動手寫一篇。 面向物件:Object Oriented Programming,簡稱OOP,即面向物件程式設計。           &nbs

Python_從零開始學習_(37) 面向物件封裝案例 2

目錄 1.  士兵突擊 1.1  開發槍類 1.2  開發士兵類 2.  身份運算子 is 與 == 區別 封裝 封裝 是面向物件程式設計的一大特點 面向物件程式設計的 第一步 ----

Python_從零開始學習_(36) 面向物件封裝案例

目錄   1.  封裝 2.  小明愛跑步 3.  小明愛跑步 ---- 小美也愛跑步 4.  擺放傢俱 4.1  新增傢俱 1.  封裝 封裝 是面向物件程式設計的一大特點

MiniJson面向物件封裝

MiniJson在unity上還是挺可以的,不過它生成的物件是Dictionary<string,object>和List<object>(舊版本生成Hashtable和ArrayList),對於C#這種強型別來說,使用還是不太方便,因此做了一個封裝可以直接生成指定物件或物件

Python3面向物件------繼承

     以下是我對Python3面向物件------繼承的理解,因為博主也是初學Python3,有很多東西都還停留在表層的理解,如果我的部落格有任何錯誤,請及時評論或者私信我,我會及時更改。也歡迎同樣學習Python的你願意關注我的部落格,我會把我每週的學習內容進行整

Python3面向物件-----------封裝

      以下是我對Python3面向物件------封裝的理解,因為博主也是初學Python3,有很多東西都還停留在表層的理解,如果我的部落格有任何錯誤,請及時評論或者私信我,我會及時更改。也歡迎同樣學習Python的你願意關注我的部落格,我會把我每週的學習內容進行