Python 物件導向【初級篇】__Python

來源:互聯網
上載者:User

文章參考:
Python 物件導向(初級篇)
python 物件導向(進階篇)


Python 是一門物件導向的語言。本文是物件導向編程的初級篇,僅介紹封裝,不涉及繼承和多態。鑒於C++也是一門物件導向的語言,裡面有很多相通之處。

類的成員

類的成員可以分為三大類:變數方法屬性



變數 普通變數屬於對象 靜態變數屬於類,即不管執行個體化了多少個對象,靜態變數只有一份

class student:    # 靜態變數    type = "human"    def __init__(self, id, name):        # 普通變數        self.id = id        self.name = name# 訪問靜態變數print(student.type)# 訪問普通變數s = student(3, "mick")print(s.name)print(s.type)       # 靜態變數也可以由對象訪問


方法 普通方法:由對象調用,至少一個self參數,執行普通方法時,自動將調用該方法的對象賦值給self 類方法:由類 或 對象 調用,至少一個cls參數,執行類方法時,自動將調用該方法的類複製給cls 靜態方法:由類 或 對象 調用,無預設參數

class student:    type = "human"    def __init__(self, id, name):        self.id = id        self.name = name    # 普通方法    def show(self):        print("id: {0}\t name: {1}".format(self.id, self.name))    # 類方法    @classmethod    def another_init(cls, id, name):        return cls(id, name)    # 靜態方法    @staticmethod    def Hello():        print("Hello")s = student.another_init(3, "mick")s.show()s.Hello()student.Hello()

相同點:三種方法都歸屬於類,記憶體上只有一份。
不同點:三種方法的區別在於傳入的參數不同,普通方法一定要對象來調用,因為普通方法的第一個參數是對象本身,類方法 和 靜態方法 既可以用對象調用,也可以用類直接調用,它倆的區別在於類方法還會傳入將類作為參數傳入,而靜態方法則沒有必須要傳入的參數。


屬性

Python 中的屬性其實是普通方法的變種,調用時:無需括弧,像是訪問變數一樣

屬性的定義方式 裝飾器:在方法上應用裝飾器 靜態變數方式:在類中定義值為property對象的靜態變數

Python3 取消了經典類,只有新式類。

一、裝飾器方式:@property、@方法名.setter、@方法名.deleter

class student:    def __init__(self, id, name):        # 普通變數        self.id = id        self.name = name    @property                      # 由property裝飾,這個類方法變為讀屬性    def myname(self):        return self.name    @myname.setter                 # 由setter裝飾,這個類方法變為寫屬性    def myname(self, name):        self.name = name    @myname.deleter                # 由deleter裝飾,這個類方法變為寫屬性    def myname(self):        del self.names = student(3, "mick")print(s.myname)s.myname = "chen"print(s.myname)del s.myname

二、靜態變數方式:構造 property 對象

class student:    def __init__(self, id, name):        # 普通變數        self.id = id        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    # 參數依次對應擷取,設定,刪除    myname = property(get_name, set_name, del_name)s = student(3, "mick")print(s.myname)s.myname = "chen"print(s.myname)del s.myname


類成員許可權

分為兩種: 公有成員:在任何地方都可以訪問 私人成員:在類的內部才可以訪問,命名時前兩個字元是底線

私人成員通過 對象. _ 類名 __ 變數名 可以強制訪問

class student:    # 靜態變數    type = "human"    __sex  = "male"    def __init__(self, id, name):        # 普通變數        self.__id = id        self.name = name    def show(self):        print(student.type, student.__sex, self.__id, self.name)class postgraduate(student):    def show(self):        print(student.type, self.name)s = student(3, "mick")# 父類s.names.types._student__ids._student__sexs.show()# 子類p = postgraduate(1, "hwdtc")p.namep.typep._student__idp._student__sexp.show()
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.