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

首頁 > 編程 > Python > 正文

Python自學筆記三、面向對象編程2

2019-11-09 20:22:31
字體:
來源:轉載
供稿:網友

1.再談反射:

class Foo(): def __init__(self,name): self.name=name def show(self): 前文講過反射是以字符串的形式去對象中操作成員,根據上面的代碼看來類只能找類里的成員;而對象既可以找到自己的成員也可以找類的成員。

2.成員

class Foo: #靜態字段 position='China' #構造法方法 def __init__(self,name): temp='xxx' #普通字段,存在對象中 self.name=name #靜態方法,可以通過類訪問 @staticmethod def xo(arg1):#可以沒有參數 print 'xo' print'arg' Foo.xo('123') #xo #123 #普通方法,存在類中 def show(self): print 'show' #類方法,通過類進行訪問 @classmethod def xxoo(cls):#必須要有cls print ('xxoo',cls)Foo.xxoo()#將當前類的類名傳入#('xxoo', <class __main__.foo at 0x020A9CA8>) #特性,將方法偽裝成一種字段 @property def start(self):#不能傳額外的參數 temp='%s ' %self.name return temp def end(self): temp='%s ' %self.name return temp obj=Foo('peter') return1=obj.end() print return1 return2=obj.start #未加括號 print return2#peter#peter

綜上所述:類的成員中包括靜態字段,普通字段,靜態方法,普通方法,類方法,特性。 其中通過類訪問的有:靜態字段,靜態方法、類方法。 通過對象方有的有:普通字段、普通方法和特性

靜態字段:存在類中 ,靜態字段存在的意:把對象里面重復的數據只在類里保存一份。 普通字段,存放在對象中。 普通方法必須創建對象后才可以調用。 靜態方法不需要先創建對象就可以調用,它只是寫來類里的一個函數,跟對象無關,通過類直接訪問,支持函數式編程。 類方法可通過類直接訪問,帶有的必須參數是當前類的類名,無需建立對象。 特性是對象來調用的,原來以函數的訪問方式(函數后加括號)改成以字段的形式來訪問,此時該函數不能添加參數。

3.成員修飾符

全局變量(公有成員):任何對象都能訪問。 局部變量(私有成員):只有在類的內部才能訪問,定義方式為命名時,加入下劃線。

class Person: contry='China' #靜態字段,屬于全局變量 __provice='HuBei' #局部變量,屬于私有變量 def __init__(self,name): self.name=name def get_person_arg(self): print (Person.__provice)print (Person.__provice)#AttributeError: class Person has no attribute '__provice'#不能訪問私有變量p=Person('peter')print p.__provice#AttributeError: Person instance has no attribute '__provice'#類實例也不能訪問私有變量p=Person('peter')p.get_person_arg()#HuBei#通過類的方法獲取私有變量

那么Person的子類能夠訪問他的私有變量嗎?

class A: def __init__(self,name): self.__name='alex' def get_arg(self): print self.__nameclass B(A): def get_arg(self): print self.__nameb=B()b.get_arg()#AttributeError: B instance has no attribute '_B__name'#創建b實例時,執行父類的構造函數,但是__name為A類的私有變量,并不能繼承,所以錯誤中提示B類并沒有__name變量。

所以,私有變量(函數)只有自己能訪問,其他父類子類都不行。

4.類的特殊成員

class A: def __init__(self): print 'init' def __call__(self,*args,**kwargs): print 'call'a=A()a()#init#call類后面加括號執行__init__對象后面加括號執行__call__

doc:表示類的描述信息 module:當前操作的對象在哪個模塊. class:表示當前操作對象的類是什么 init:構造方法,創建對象時自動觸發 call:對象后面加括號,觸發執行 dict:類或對象中的所有成員 str:如果一個類中定義了str方法,那么在打印對象時,默認輸出該方法的返回值。 setitem,getitem,delitem,用于索引操作,如字典。分別表示獲取,設置,刪除數據。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 探索| 政和县| 梓潼县| 南皮县| 深泽县| 正阳县| 多伦县| 大英县| 旬邑县| 沁阳市| 昌宁县| 宜良县| 罗甸县| 清镇市| 油尖旺区| 罗山县| 洪泽县| 称多县| 钟祥市| 孟连| 宁化县| 云霄县| 防城港市| 新巴尔虎右旗| 夏津县| 罗甸县| 岳阳市| 禄丰县| 贵溪市| 汕头市| 开平市| 阜阳市| 曲阜市| 绵阳市| 鱼台县| 仁寿县| 舞钢市| 保山市| 新兴县| 叙永县| 仁寿县|