python @修饰符_Python基础(面向对象之类成员与修饰符)
本篇將介紹Python 類的成員、類成員修飾符、類的特殊成員。
類的成員可以分為三大類:字段、方法、屬性
1、字段:
也可理解為變量,分為:
普通字段:保存在對(duì)象中,訪問時(shí)通過“對(duì)象.字段名”訪問。
靜態(tài)字段:保存在類中,訪問時(shí)通過“類.字段名”訪問。
例子:class Person(object): #繼承object類說明是一個(gè)新式類
country = 'China' #靜態(tài)字段
def __init__(self,name):
print 'Person build self.name'
self.name = name #普通字段
p1 = Person('lily')
print p1.name #對(duì)象.字段訪問普通字段
print Person.country #類.字段訪問靜態(tài)字段
#執(zhí)行結(jié)果:
Person build self.name
lily
China
2、方法:
也可理解為函數(shù),分為:
普通方法:由對(duì)象調(diào)用,至少有一個(gè)self參數(shù),必須先創(chuàng)建對(duì)象才能執(zhí)行,執(zhí)行方式為:對(duì)象.方法
靜態(tài)方法:由類調(diào)用,參數(shù)任意,定義方式是在方法上加一個(gè)staticmethod裝飾器,其實(shí)就是通過面向?qū)ο蟮姆绞絹矶x函數(shù)。執(zhí)行方式為:類.方法
類方法:由類調(diào)用,至少有一個(gè)cls參數(shù),定義方式是在方法上加一個(gè)classmethod裝飾器。執(zhí)行方式為:類.方法
例子:class Person(object):
country = 'China'
def __init__(self,name):
print 'Person build self.name'
self.name = name
def say(self): #定義普通方法,至少有一個(gè)self參數(shù)
print 'Normal say: %s'%self.name
@staticmethod
def static_say(name): #定義靜態(tài)方法,參數(shù)任意
print 'Static say: %s'%name
@classmethod
def class_say(cls,name): #定義類方法,至少有一個(gè)cls參數(shù)
print 'Class say: %s'%name
#調(diào)用普通方法
p1 = Person('Lily')
p1.say()
#調(diào)用靜態(tài)方法
Person.static_say('Lucy')
#調(diào)用類方法
Person.class_say('Lilei')
#執(zhí)行結(jié)果
Person build self.name
Normal say: Lily
Static say: Lucy
Class say: Lilei
3、屬性:
作用就是把普通方法偽裝成字段,定義方式為在普通方法上加一個(gè)property裝飾器,僅有一個(gè)self參數(shù),調(diào)用時(shí)無須括號(hào)。
例子:class Person(object):
country = 'China'
def __init__(self,name):
print 'Person build self.name'
self.name = name
def say1(self): #普通方法
print 'Say1: %s'%self.name
@property
def say2(self): #定義屬性
return 'Say2: %s'%self.name
p1 = Person('Lily')
p1.say1() #普通方法調(diào)用方式
ret = p1.say2 #屬性調(diào)用方式
print ret
#運(yùn)行結(jié)果:
Person build self.name
Say1: Lily
Say2: Lily
類成員修飾符
對(duì)每一個(gè)類的成員而言都有兩種形式:公有成員、私有成員
公有成員:任何地方都能訪問
私有成員:只有在類的內(nèi)部才能訪問,定義方式為命名時(shí),前兩個(gè)字符為下劃線,如 "__test"
例子:class Person(object):
country = 'China' #靜態(tài)字段,屬于公有成員
__planet = 'Earth' #靜態(tài)字段,屬于私有成員
def __init__(self,name):
print 'Person build self.name'
self.name = name
def say(self):
print 'The planet is %s'%Person.__planet #在類的內(nèi)部訪問私有靜態(tài)字段
p1 = Person('Nothing')
p1.say()
print p1.country #訪問公有靜態(tài)字段
print p1.__planet #訪問私有靜態(tài)字段
#執(zhí)行結(jié)果:
Person build self.name
The planet is Earth #在類的內(nèi)部可以訪問
print p1.__planet
China #外部可以訪問公有靜態(tài)字段
AttributeError: 'Person' object has no attribute '__planet' #外部無法訪問私有靜態(tài)字段
類的特殊成員(詳細(xì)用法例子后期補(bǔ)上):
__doc__ 表示類的描述信息
__module__ 表示當(dāng)前操作的對(duì)象在那個(gè)模塊
__class__ 表示當(dāng)前操作的對(duì)象的類是什么
__init__ 構(gòu)造方法,通過類創(chuàng)建對(duì)象時(shí),自動(dòng)觸發(fā)執(zhí)行
__call__ 對(duì)象后面加括號(hào),觸發(fā)執(zhí)行。
__dict__ 類或?qū)ο笾械乃谐蓡T
__str__ 如果一個(gè)類中定義了__str__方法,那么在打印 對(duì)象 時(shí),默認(rèn)輸出該方法的返回值。
總結(jié)
以上是生活随笔為你收集整理的python @修饰符_Python基础(面向对象之类成员与修饰符)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python封装举例_Python面向对
- 下一篇: 你必须具有权限才能读取此对象_win10