類即類別、種類,是面向對象設計最重要的概念,從一小節咱們得知對象是特徵與技能的結合體,而類則是一系列對象類似的特徵與技能的結合體。python
那麼問題來了,先有的一個個具體存在的對象(好比一個具體存在的人),仍是先有的人類這個概念,這個問題須要分兩種狀況去看。編程
世界上確定是先出現各類各樣的實際存在的物體,而後隨着人類文明的發展,人類站在不一樣的角度總結出了不一樣的種類,好比 人類、動物類、植物類等概念。也就說,對象是具體的存在,而類僅僅只是一個概念,並不真實存在,好比你沒法告訴我人類 具體指的是哪個人。
這與函數的使用是相似的:先定義函數,後調用函數,類也是同樣的:在程序中須要先定義類,後調用類。不同的是:調用 函數會執行函數體代碼返回的是函數體執行的結果,而調用類會產生對象,返回的是對象。
按照上述步驟,咱們來定義一個類(咱們站在老男孩學校的角度去看,在座的各位都是學生)函數
對象1:李坦克 特徵: 學校=oldboy 姓名=李坦克 性別=男 年齡=18 技能: 學習 吃飯 睡覺 對象2:王大炮 特徵: 學校=oldboy 姓名=王大炮 性別=女 年齡=38 技能: 學習 吃飯 睡覺 對象3:牛榴彈 特徵: 學校=oldboy 姓名=牛榴彈 性別=男 年齡=78 技能: 學習 吃飯 睡覺 現實中的老男孩學生類 類似的特徵: 學校=oldboy 類似的技能: 學習 吃飯 睡覺
注意:學習
OldboyStudent.__dict__
查看.OldboyStudent.school #查 OldboyStudent.school='Oldboy' #改 OldboyStudent.x=1 #增 del OldboyStudent.x #刪
s1=OldboyStudent() s2=OldboyStudent() s3=OldboyStudent() #如此,s一、s二、s3都同樣了,而這三者除了類似的屬性以外還各類不一樣的屬性,這就用到了__init__
__init__
方法#注意:該方法是在對象產生以後纔會執行,只用來爲對象進行初始化操做,能夠有任意代碼,但必定不能有返回值 class OldboyStudent: ...... def __init__(self,name,age,sex): self.name=name self.age=age self.sex=sex ...... s1=OldboyStudent('李坦克','男',18) #先調用類產生空對象s1,而後調用OldboyStudent.__init__(s1,'李坦克','男',18) s2=OldboyStudent('王大炮','女',38) s3=OldboyStudent('牛榴彈','男',78)
#執行__init__,s1.name='牛榴彈',很明顯也會產生對象的名稱空間能夠用s2.__dict__查看,查看結果爲 {'name': '王大炮', 'age': '女', 'sex': 38} s2.name #查,等同於s2.__dict__['name'] s2.name='王三炮' #改,等同於s2.__dict__['name']='王三炮' s2.course='python' #增,等同於s2.__dict__['course']='python' del s2.course #刪,等同於s2.__dict__.pop('course')