'''輸出結果: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__,如下:
使用__init__不需要再return,自動會返回乙個字典'''
class car:
'這是乙個車的類'
brand='nissan'
def __init__(name,length,weight):
dic=
return dic
def drift():
print('漂移完成了乙個漂亮的過彎')
def brake(self):
print('完成了乙個完美的剎車')
s1=car('尼桑',4,1500)
'''
最終效果:
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
修改函式方法,需要先建立乙個方法,再替換:檢視:print(car.brand)def test(self):
print("test")
#把drift方法改為test方法:
car.drift=test
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 訪問修飾符 屬性型別 屬性名 有四種訪...