国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python中的面向對象

2019-11-06 07:12:49
字體:
來源:轉載
供稿:網友

一. 定義類 經典類:如果沒有直接或間接的子類化一個對象,也就是說如果沒有指定一個父類,或者是如果子類化的基本類沒有父類,那么就定義了經典類:

class A: pass

新式類:如果你的類沒有繼承任何父類,object將作為默認的父類

class B(object): pass

Python 2.x中默認都是經典類,只有顯式繼承了object才是新式類 Python 3.x中默認都是新式類,不必顯式的繼承object 二. 定義類的屬性 1.1 直接在類里定義

class A(object): a=100

在不做修改的情況下,所以這個類的對象的屬性都是一樣的 1.2 在構造函數里定義

class A(object): def __init__(self,a): self.a=100

構造對象時把一些屬性的值傳進去,不同的對象可以有不同的屬性 2.訪問控制 python沒有訪問控制,沒有提供私有屬性的功能,在日常編程中通過一些編程規范和命名規則進行約束 前面加_表示私有屬性(只是一種編程規范,不是python語法的功能,仍然可以訪問到) 前面加__變相實現了部分私有屬性的訪問

class PRogramer(object): def__init__(self,weight): self.__weight=weight def get_weight(self): return self.__weightif __name__=='__main__': p=Programer(80) print(p.get_weight()) print(p._Programer__weight)#80#80

三. 定義類的方法 方法包括:普通方法、靜態方法和類方法,三種方法在內存中都歸屬于類,區別在于調用方式不同。 普通方法:由對象調用;至少一個self參數;執行普通方法時,自動將調用該方法的對象賦值給self 類方法:由類調用; 至少一個cls參數;執行類方法時,自動將調用該方法的類復制給cls 靜態方法:由類調用;無默認參數

class Foo: def __init__(self, name): self.name = name def ord_func(self): """ 定義普通方法,至少有一個self參數 """ # print self.name print '普通方法' @classmethod #類方法的裝飾器 def class_func(cls): """ 定義類方法,至少有一個cls參數 """ print '類方法' @staticmethod #靜態方法的裝飾器 def static_func(): """ 定義靜態方法 ,無默認參數""" print '靜態方法'# 調用普通方法,對象名調用f = Foo()f.ord_func()# 調用類方法,類名調用Foo.class_func() # 調用靜態方法,類名調用Foo.static_func()

四. 類的繼承 繼承的子類會繼承父類的所有屬性,也可以自己定義,覆蓋父類的屬性和方法 對于面向對象的繼承來說,其實就是將多個類共有的方法提取到父類中,子類僅需繼承父類而不必一一實現每個方法 class 類名(要繼承的類): 如果不繼承類,則繼承object類,object類是所有類的父類

調用父類的方法: super(自己的類名,self).相應的方法名

多繼承: 1、Python的類可以繼承多個類,java和C#中則只能繼承一個類 2、Python的類如果繼承了多個類,那么其尋找方法的方式有兩種,分別是:深度優先和廣度優先 當類是經典類時,多繼承情況下,會按照深度優先方式查找 當類是新式類時,多繼承情況下,會按照廣度優先方式查找


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 离岛区| 牙克石市| 疏勒县| 崇州市| 梓潼县| 清苑县| 肇源县| 马公市| 祁阳县| 香港| 汉川市| 武宣县| 甘孜| 北票市| 长寿区| 府谷县| 张掖市| 大新县| 靖江市| 左云县| 凉山| 句容市| 廉江市| 伊吾县| 漠河县| 永修县| 陆川县| 井陉县| 竹北市| 定兴县| 陇南市| 武川县| 博兴县| 兰溪市| 仙游县| 新民市| 西林县| 秦安县| 广河县| 玛纳斯县| 饶河县|