類的相關知識

2021-08-21 21:37:29 字數 4441 閱讀 2522

'''

1.資料屬性

2.函式屬性

'''class car:

'這是乙個車的類'

brand='nissan'

def drift():

print('漂移完成了乙個漂亮的過彎')

def brake(self):

print('完成了乙個完美的剎車')

print(dir(car))#屬性名查詢,以列表形式存放

print(car.__dict__)#檢視類的屬性字典,資料屬性和函式屬性都放在字典中,以字典形式存的鍵值對,可以通過對映來直接呼叫

#呼叫print(car.brand)

print(car.__dict__['brand'])#呼叫資料其實就是從屬性字典中拿

car.drift()

car.__dict__['drift']()#呼叫方法其實就是從屬性字典中拿

car.brake(496)

car.__dict__['brake'](496)#呼叫方法其實就是從屬性字典中拿

#類的特殊屬性

print(car.__name__)#類的名字(字串)

print(car.__doc__)#類的文件字串

print(car.__base__)#類的第乙個父類(繼承時詳解)

print(car.__bases__)#類的負累構成的元祖(繼承時詳解)

print(car.__dict__)#類的屬性

print(car.__module__)#類定義所在的模組

print(car.__class__)#例項對應的類(僅新式類中)

輸出結果:

'這是乙個車的類'

brand='nissan'

def init(name,length,weight):

dic=

return dic

def drift():

print('漂移完成了乙個漂亮的過彎')

def brake(self):

print('完成了乙個完美的剎車')

return init(name,length,weight)返回的

s1=car('尼桑',4,1500)

思路上:定義乙個init的函式,寫上初始化的屬性,類返回乙個init,init中再返回乙個字典。

理想效果:傳入引數,完成執行,但語法上這樣是不支援的,需要用到__init__,如下:

'''

class car:

'這是乙個車的類'

brand='nissan'

def __init__(name,length,weight):

dic=

return dic

def drift():

print('漂移完成了乙個漂亮的過彎')

def brake(self):

print('完成了乙個完美的剎車')

s1=car('尼桑',4,1500)

'''

使用__init__不需要再return,自動會返回乙個字典

最終效果:

class car:

'這是乙個車的類'

brand='nissan'

def __init__(self,name,length,weight):

print('我開始執行了')

self.mingzi=name

self.changdu=length

self.zhongliang=weight

print('我執行結束了')

def drift():

print('漂移完成了乙個漂亮的過彎')

def brake(self):

print('%s 完成了乙個完美的剎車' %self.mingzi)

s1=car('尼桑',4,1500) #--> __init__(self,name,length,weight)也就是執行

print(s1.__dict__)

s1.brake()#先是從區域性作用域自己的init裡面找,找不到再到上一層大類中找,再找不到就報錯

print(s1.mingzi)#就是從字典中拿,-->s1.__dict__['mingzi']

car.brake(s1)

輸出結果如下:

s1=car() 觸發__init__()方法

所以需要3個引數:'尼桑',4,1500

self.mingzi=name相當於s1.mingzi=name

self.changdu=length相當於s1.changdu=length

self.zhongliang=weight相當於s1.zhongliang=weight

例項化就是__init__函式的執行,所以s1.__dict__返回的字典也不會有函式屬性:

呼叫資料屬性:s1.mingzi

呼叫函式屬性:car.brake(s1)或者s1.brake()#自動傳入s1本身==self

多個例項中,只儲存資料屬性,而函式屬性都在類中去找,這樣的設計是非常必要的,對記憶體的節省

def test(self):

print('test')

car.drift=test

s1.drift()

增加:car.country='word'

刪除:del car.country

修改:car.brand='gtr'

修改函式名:car.piaoyi=drift

修改函式方法,需要先建立乙個方法,再替換:

def test(self):

print("test")

#把drift方法改為test方法:

car.drift=test  

檢視:print(car.brand)

class car:

'這是乙個車的類'

brand='nissan'

def __init__(self,name,length,weight):

print('我開始執行了')

self.mingzi=name

self.changdu=length

self.zhongliang=weight

print('我執行結束了')

def drift():

print('漂移完成了乙個漂亮的過彎')

def brake(self):

print('%s 完成了乙個完美的剎車' %self.mingzi)

s1=car('尼桑',4,1500)

檢視:s1.mingzi資料檢視

s1.brake方法檢視

增加:s1.height=1.5資料屬性增加

例項函式屬性增加:

def test2(self):

print("多餘")

s1.test2=test2

s1.test2(s1)

修改:s1.mingzi='奧拓'

刪除:del s1.mingzi

country='美國'

class car:

country='中國'

l=[1,2,3]

def __init__(self,name):

self.country="重慶"

print('直接列印:',country)

print('通過.類名呼叫:',car.country)

print("通過.例項呼叫:",self.country)

s1=car('lee')

#s1.l=[2,2,3]

print(car.__dict__)

print(s1.__dict__)

print(s1.__dict__)

print(car.__dict__)

輸出結果:

類的相關知識

類的三大特性 1 封裝 類裡面的屬性和方法對外是透明的,不可直接訪問的。2 繼承 乙個類可以派生出子類,子類繼承父類的屬性和方法。3 多型 乙個介面,多種實現。即類中提供乙個統一介面,供例項使用。多型演示 定義乙個動物類,例項化多個動物。每種動物都有 叫 的功能,使用乙個介面去呼叫它們的這個功能。示...

集合類的相關知識

set集合類似乙個罐子,一旦把物件丟進set集合,集合裡多個物件之間沒有明顯的順序。set集合裡面不允許包含相同的元素,如果試圖把兩個相同元素加入到乙個set中,則新增操作失敗,add方法返回false,且新元素不會被加入。set集合判斷兩個物件是不是相同是根據equals方法,也就是說兩個物件的e...

類 物件相關知識

1 public class object0117 1819 20 類要放在main方法的外面 21 通過class 先定義類的名稱及屬性 22 定義乙個類名為nba 並賦予相應的屬性 23class nba 注意事項和細節說明 1.屬性的定義語法同變數,eg 訪問修飾符 屬性型別 屬性名 有四種訪...