類:把一類事物相同的特徵和動做整合到一塊兒,就是類,類是抽象的概念。數據結構
類的本質:一種數據結構app
對象:基於類產生的一個具體事物,具備類的動做和特徵,只包含本身的特徵數據。ide
實例化:就是類名(),也就是初始化__init__(),它的做用就是產生一個字典,初始化結果就是返回一個實例對象。函數
對象.屬性名:先在本身的字典裏查找,若是沒有,再去類的字典裏查找。即有其做用域。spa
實例經過引用的方法去訪問類的函數屬性,這樣節約資源code
#py2中類分經典類和新式類,class A:經典類,class B(object)新式類,py3中全是新式類 country='China' population=20000 class School: #類:數據屬性+方法屬性 proper='公立' #數據屬性,又叫類的靜態屬性 country='American' ls=[1,2,3] def __init__(self,name,add,tel): #只包含對象的數據屬性,在對象的__dict__中 self.name=name, self.add=add, self.tel=tel print('--->',country)#返回:---> China,表示查找變量country,全局找,返順'China',s.country或School.country,則是查屬性'American' def test(self): #類的方法屬性 print('%s正在舉行考試。。。'%self.name) def enrollment(self): print('%s正在招生。。。'%self.name) s1=School('中國科技大學','合肥','05511114556') s2=School('清華大學','北京','010111222') s1.test() s2.enrollment() print(School)#<class '__main__.School'>,__main__下的School類 print(s1)#<__main__.School object at 0x004EFA50>,__main__下School類的對象地址 print(School.__dict__) #'__module__': '__main__', 'proper': '公立', '__init__': <function School.__init__ at 0x015BC6A8>, 'test': <function School.test at 0x01C9E8A0>, 'enrollment': <function School.enrollment at 0x01C9E858>, '__dict__': <attribute '__dict__' of 'School' objects>, '__weakref__': <attribute '__weakref__' of 'School' objects>, '__doc__': None} #School.__dict__,查看類的屬性字典,包含類的數據屬性和方法屬性 print(s1.__dict__)#{'name': ('中國科技大學',), 'add': ('合肥',), 'tel': '05511114556'},僅包含實例化對象的數據屬性 #=類屬性:增刪查改=================== s1.order='NO1' School.area=500#增長 print(s1.order,School.area)#NO1 500 s1.area=600 #更改 print(s1.area,School.area)#600 500,查看 s2.ls=['a','b']#這是給s2增一個ls的列表屬性,不影響School的ls列表 print(School.ls)#[1, 2, 3] s1.ls.append('a')#這是引用了School.ls列表,給School.ls列表增長一個元素'a',s1中沒有增長列表 print(s1.__dict__)#沒有ls屬性,{'name': ('中國科技大學',), 'add': ('合肥',), 'tel': '05511114556', 'order': 'NO1', 'area': 600} print(School.ls)#School.ls列表改變,[1, 2, 3, 'a'] del s1.order#刪除 print(s1.population)#報錯,僅管有個全局變量population=20000,類的查找順序是:實例字典,再到類字典,沒有就報錯 #注:print('--->',country),是在查找變量country,而s1.population表示查找s1對象屬性'population',是兩回事,查屬性在字典裏找,查變量在全局找