python 是動態語言,對於類,使用是非常靈活和方便的。目錄一、類屬性本文還有一些沒補充,下次補充
類屬性--查詢
類屬性--修改
(一)、用__init__方法,修改類屬性
(二)、用類方法,修改類屬性
(三)、動態修改類屬性
二、例項屬性
例項屬性--查詢
例項屬性--修改
三、例項方法
(一)、同類中,呼叫例項方法
(二)、不同類中,呼叫例項方法
類屬性查詢方法:類物件名.類屬性名 (建議這個方法)
或者例項物件名.類屬性名 (不建議,而且前提是沒有init方法,否則會優先取init方法中的屬性名)
class dog(object):
name = '小狗'
def __init__(self):
self.name = '大狗'
總結:使用初始化__init__方法,可以修改類屬性。只不過假性修改,原類屬性的值還是存在
class dog(object):
name = '小狗'
def __init__(self):
self.name = 'init大狗'
@classmethod
def test(cls):
cls.name = '大狗' #修改類屬性
d1 = dog()
print(dog.name)
d1.test() #呼叫類方法-test
print(dog.name)
注意:建立類方法,格式:開頭@classmethod 然後括號裡面是cls。不理解類方法請複習。
總結:類方法 可以修改類屬性, 和init 方法比較。init方法是建立例項物件的時候自動執行init 了,當然也自動修改類屬性。
而類方法則需要呼叫一下才生效。
物件例項化後,再去修改也是可以的。這就是python的特性。看下案例
class dog(object):
name = '小狗'
def __init__(self):
self.name = 'init大狗'
@classmethod
def test(cls):
cls.name = '大狗' #修改類屬性
d1 = dog()
d1.test()
print(dog.name)
dog.name = '柴犬'
總結:可以動態地去修改類屬性
class test():
name = '類屬性'
def __init__(self):
self.name = '例項屬性name'
self.lastname = '例項屬性lastname'
t= test()
#查詢例項屬性
print(t.name)
print(t.lastname)
# print(test.name) #例項屬性不能通過 類物件名字.屬性名字 來訪問
self.name = '例項屬性name'
t= test()
print(t.name)
t.name ='hello' #修改例項屬性為hello
2種方法,共8種場景舉例
學習目標:有2種方法,通過類物件呼叫,通過例項物件呼叫
方法(1): 通過例項物件,呼叫例項方法
方法(2):通過類物件,呼叫例項方法
1、類方法只有乙個引數self 的情況:
學習目的:同類中呼叫方法(例項方法),該怎麼處理。
class cat:
def cat_age(self):
print('---貓的年齡未知---')
c = cat() #必須要先例項化,才能呼叫方法(無論什麼方法)
c.cat_age() #用例項物件,呼叫例項方法
cat.cat_age(c) #用類物件,呼叫例項方法,需要加self引數
執行結果:
---貓的年齡未知---
---貓的年齡未知---
2、類方法有多個引數的情況
學習目的:同類中呼叫方法(例項方法),方法有多個引數時,該怎麼處理。
class cat:
def cat_age(self,age):
return '貓的年齡是%d' % age
#該方法和第乙個完全一樣,如果後續需要傳遞值,則加self.age2=age2,否則就簡單寫一下return就行
# def cat_age2(self, age2):
# self.age2=age2
# return '貓的年齡是%d' % age2
c = cat()
test=cat.cat_age(c,18) #用類物件,呼叫例項方法,需要加self引數
print(test)
test=c.cat_age(18) #用例項物件,呼叫例項方法
print(test)
執行結果:
貓的年齡是18
貓的年齡是18
學習目標:有2種方法
方法(1): 通過例項物件,呼叫例項方法
方法(2):通過類物件,呼叫例項方法
1、類方法只有乙個引數self 的情況:
學習目的:多個類呼叫其他類方法(例項方法),該怎麼處理。
class cat:
def cat_age(self):
print('---它的年齡未知---')
class dog:
def dog_age(self):
print('狗的年齡?')
return cat.cat_age(self) #呼叫其他類的例項方法
d = dog() #首先例項化
#實現dog類 呼叫其他類例項方法,一共有2種實現:
d.dog_age() # 1、通過例項物件,呼叫例項方法
dog.dog_age(d) # 2、通過類物件,呼叫例項方法
執行結果:
狗的年齡?
---它的年齡未知---
狗的年齡?
---它的年齡未知---
2、類方法有多個引數的情況
學習目的:多個類呼叫其他類方法(例項方法),方法有多個引數時,該怎麼處理。
想要dog類可以使用cat類的方法:
class cat:
def cat_age(self,age):
return '它年齡是%d' % age
class dog:
def dog_age(self,age):
print('狗的年齡?')
return cat.cat_age(self,age)
d = dog() #不需要例項化cat,因為我只用到 dog類中的方法
print(d.dog_age(18)) # 1、通過例項物件,呼叫例項方法
print(dog.dog_age(d,18)) # 2、通過類物件,呼叫例項方法
執行結果:
狗的年齡?
它年齡是18
狗的年齡?
它年齡是18
未完待續
python3內建方法
本文大部分內容來自 主要內容為python3中的內建函式,可以通過命令 dir builtins 進行查詢 對於具體某個內建函式可以通過命令 help 函式名 檢視其功能和具體用法。內建函式 abs 對傳入引數取絕對值 bool 對傳入引數取布林值,none,0,這些引數傳入bool後,返回fals...
python3內建函式詳解
abs 獲取絕對值 all 接受乙個迭代器,如果迭代器的所有元素都為真,那麼返回true,否則返回false any 接受乙個迭代器,如果迭代器裡有乙個元素為真,那麼返回true,否則返回false ascii 呼叫物件的repr 方法,獲得該方法的返回值.bin oct hex 三個函式功能為 將...
python3之編碼詳解
一,python2與python3的區別 1 python2可以不用括號 python3必須加括號 2 python2中有range 有序列表,xrange 生成器 python3中只有range 3 python2中輸入是raw input python3中輸入是input 二,is 三者的區別 ...