類即類別、種類,是物件導向設計最重要的概念,從一小節我們得知物件是特徵與技能的結合體,而類則是一系列物件相似的特徵與技能的結合體。
那麼問題來了,先有的乙個個具體存在的物件(比如乙個具體存在的人),還是先有的人類這個概念,這個問題需要分兩種情況去看
世界上肯定是先出現各種各樣的實際存在的物體,然後隨著人類文明的發展,人類站在不同的角度總結出了不同的種類,比如
人類、動物類、植物類等概念。也就說,物件是具體的存在,而類僅僅只是乙個概念,並不真實存在,比如你無法告訴我人類
具體指的是哪乙個人。
這與函式的使用是類似的:先定義函式,後呼叫函式,類也是一樣的:在程式中需要先定義類,後呼叫類。不一樣的是:呼叫
函式會執行函式體**返回的是函式體執行的結果,而呼叫類會產生物件,返回的是物件
按照上述步驟,我們來定義乙個類(我們站在老男孩學校的角度去看,在座的各位都是學生)
物件1:李坦克
特徵:學校=oldboy
姓名=李坦克
性別=男
年齡=18
技能:學習
吃飯睡覺
物件2:王大炮
特徵:學校=oldboy
姓名=王大炮
性別=女
年齡=38
技能:學習
吃飯睡覺
物件3:牛榴彈
特徵:學校=oldboy
姓名=牛榴彈
性別=男
年齡=78
技能:學習
吃飯睡覺
現實中的老男孩學生類
相似的特徵:
學校=oldboy
相似的技能:
學習吃飯
睡覺
#在python中程式中的類用class關鍵字定義,而在程式中特徵用變數標識,技能用函式標識,因而類中最常見的無非是:變數和函式的定義
class oldboystudent:
school='oldboy'
def learn(self):
print('is learning')
def eat(self):
print('is eating')
def sleep(self):
print('is sleeping')
注意:
oldboystudent.school #查
oldboystudent.school='oldboy' #改
oldboystudent.x=1 #增
del oldboystudent.x #刪
s1=oldboystudent()
s2=oldboystudent()
s3=oldboystudent()
#如此,s1、s2、s3都一樣了,而這三者除了相似的屬性之外還各種不同的屬性,這就用到了__init__
#注意:該方法是在物件產生之後才會執行,只用來為物件進行初始化操作,可以有任意**,但一定不能有返回值
class oldboystudent:
......
def __init__(self,name,age,***):
self.name=name
self.age=age
self.***=***
......
s1=oldboystudent('李坦克','男',18) #先呼叫類產生空物件s1,然後呼叫oldboystudent.__init__(s1,'李坦克','男',18)
s2=oldboystudent('王大炮','女',38)
s3=oldboystudent('牛榴彈','男',78)
#執行__init__,s1.name='牛榴彈',很明顯也會產生物件的命名空間可以用s2.__dict__檢視,檢視結果為
s2.name #查,等同於s2.__dict__['name']
s2.name='王三炮' #改,等同於s2.__dict__['name']='王三炮'
s2.course='python' #增,等同於s2.__dict__['course']='python'
del s2.course #刪,等同於s2.__dict__.pop('course')
類和物件2
一,建構函式 特性 函式名與類名相同。無返回值。物件例項化時編譯器自動呼叫對應的建構函式。建構函式可以過載。class date date void init int year,int month,int day void init date this,int year,int month,int ...
2 類和物件
類是一種資料型別,設計時系統不為類分配儲存空間,所以不能去訪問類裡面的資料成員,也不能去初始化類裡 面的資料成員。只能訪問這個類所產生的物件的資料成員 前提是共有 eg 類相當於圖紙是描述和規劃的藍圖,而物件就是圖紙例項化後的實體物件 樓房 計算機不給類分配記憶體,只給物件分配記憶體。建立物件有兩種...
類和物件2
物件的定義 物件等同於資料加操作 物件 資料 操作 屬性 filed 方法 method 類 類是產生物件的模板 圖紙 學會定義類要解決下面兩個問題 1.如何使用定義好的類,例項化出物件 2.學會使用物件 通過引用 1.操作物件中的屬性 2.呼叫物件關聯的方法 一.如何定義類 public clas...