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

首頁 > 編程 > Python > 正文

Python中的類class

2019-11-08 01:17:16
字體:
供稿:網(wǎng)友

class的基本定義

class test(object): a = 1 def func_1(self): return self.arg1,self.arg2 def __init__(self,arg1,arg2): #構(gòu)造函數(shù) self.arg1 = arg1 #將參數(shù)引用到類的內(nèi)部 self.arg2 = arg2 def __del__(self): #析構(gòu)函數(shù) del self.arg1 del self.arg2

注: 1. a 被稱為類test的屬性 2. func_1 被稱為類test的方法 3. 所有的class都是object的派生類

基本繼承:一個(gè)子類可以繼承它的基類任何屬性

class Base(object): def __init__(self,name): self.name = name class b(Base): #這是python中繼承的方法 def get_name(self): return self.name new_class = b (‘lilei’) PRint new_class.get_name()

注意:子類重寫__init__不會自動調(diào)用基類的__init__:與java不同

類的特殊屬性:

對于任何類C,C具有六個(gè)特殊屬性:

C.__name__ 類的名字(字符串); C.__doc__ 類的文檔字符串(不能繼承);C.__bases__ 類C的所有父類構(gòu)成的元組C.__dict__ 類C的屬性(字典)C.__module__ 類C定義所在的模塊C.__class__ 實(shí)例C所對應(yīng)的類(用的較少,只在新式類中)

對于實(shí)例屬性c = C()具有兩個(gè)特殊屬性:

c.__class__ 實(shí)例c的類c.__dict__ c的屬性

從實(shí)例中訪問類屬性需謹(jǐn)慎: 給一個(gè)與類屬性同名的實(shí)例屬性賦值,我們會“隱藏”類屬性。即實(shí)例對于屬性進(jìn)行的修改只位于實(shí)例中,類中的同名屬性不會改變。但是類屬性的修改會影響到所有實(shí)例。

class Foo(object): x = 1.5 foo = Foo() foo.x #值為1.5 foo.x = 1.7 #或者foo.x += 0.2 Foo.x #值仍為1.5

靜態(tài)方法和類方法

靜態(tài)方法:不需實(shí)例化,可以直接用類名調(diào)用的方法。 類方法:可以通過類或它的實(shí)例來調(diào)用的方法。不管你是用類來調(diào)用這個(gè)方法還是類實(shí)例調(diào)用這個(gè)方法,該方法的第一個(gè)參數(shù)總是定義該方法的類對象。

staticmethod() 創(chuàng)建靜態(tài)方法,不需要self作為第一個(gè)參數(shù) @staticmethodclassmethod() 創(chuàng)建類方法,很多人使用cls作為變量名。 @classmethod class TestStaticMethod: def foo(): print ‘hahaha' foo = staticmethod(foo) #如果沒有這個(gè)內(nèi)建函數(shù),會報(bào)錯(cuò),因?yàn)闆]有self參數(shù) class TestClassMethod: def foo(cls): print ‘hehehe' foo = classmethod(foo) #同上 ##現(xiàn)在可以用函數(shù)修飾符代替上面的方式(推薦): class TestStaticMethod: @staticmethod def foo(): print ‘hahaha' class TestClassMethod: @classmethod def foo(cls): print ‘hehehe'

私有化

python屬性默認(rèn)是公開的。使用訪問控制符來限定成員函數(shù)的訪問,將對象數(shù)據(jù)隱藏,實(shí)現(xiàn)封裝。 1. 雙下劃線(__) :由雙下劃線開始的屬性在運(yùn)行時(shí)不能直接訪問。 2. 單下劃線(_):簡單的模塊級私有化只需在屬性(或函數(shù))名前使用單下劃線字符,阻止模塊屬性用import來加載。

用特殊方法定制類

特殊方法允許類通過重載標(biāo)準(zhǔn)操作符來模擬標(biāo)準(zhǔn)類型,這些方法都是以雙下劃線開始及結(jié)尾的。 1. 模擬標(biāo)準(zhǔn)類型 2. 重載操作符

__add__(self,obj)方法 重載 + __iadd__()方法 重載+=__sub__()方法 重載 - __mul__()方法 重載 *__div__()方法 重載/

使用對象內(nèi)置的方法

綁定:方法只有在其所屬類擁有實(shí)例的時(shí)候才能被調(diào)用, 非綁定:在子類構(gòu)造器__init__()中調(diào)用覆蓋的父類__init__()方法中使用(__del__()同) 1. 實(shí)例化這個(gè)class (test) t = test() 2. 使用 class.method()的方式去調(diào)用 class 的內(nèi)置方法。 注意:當(dāng)定義一個(gè)class的內(nèi)置方法method時(shí),method的參數(shù)的第一個(gè)永遠(yuǎn)是self。

一些有用的內(nèi)建函數(shù)

issubclass(sub,sup) :判斷一個(gè)類是否是另一個(gè)類的子類,返回布爾值 isinstance(obj1,obj2):判定一個(gè)對象是否是另一個(gè)給定類的實(shí)例,返回布爾值。

*attr()系列函數(shù)可以在各種對象下工作

hasattr(obj,’attr’) :判斷一個(gè)對象是否具有特定的屬性,返回布爾值 gettattr(obj,’attr’):取得相應(yīng)屬性的值。setattr() delattr()super():幫助找出相應(yīng)的父類,然后方便調(diào)用相關(guān)屬性。super(MyClass,self).__init__()
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 泰州市| 合阳县| 宜兴市| 镇赉县| 博野县| 新源县| 精河县| 黑山县| 普兰县| 包头市| 灵武市| 镇赉县| 鸡东县| 奉化市| 上杭县| 当雄县| 绥阳县| 开江县| 樟树市| 镇赉县| 巴东县| 辽宁省| 个旧市| 滕州市| 靖边县| 桐城市| 永福县| 安康市| 乳源| 永清县| 南京市| 通城县| 郧西县| 仙桃市| 杭州市| 闻喜县| 潼关县| 岚皋县| 嘉峪关市| 桐柏县| 台北县|