類與物件
類:
是一組相關屬性和行為的集合,可以看成是一類事物的模板,使用事物的屬性特征和行為特征來描述該 類事物,
舉例:貓,
屬性:名字、體重、年齡、顏色, 行為:走、跑、叫,
物件:
類的具體體現,實作,
舉例:一只小貓,
屬性:tom、5kg、2 years、yellow, 行為:溜墻根走、蹦跶的跑、喵喵叫,
類與物件的關系
- 類是對一類事物的描述,是抽象的,
- 物件是一類事物的實體,是具體的,
- 類是物件的模板,物件是類的物體,
- 物件是根據類來創建的,類中有什么物件就有什么
舉例:當我們提到手機的時候,我們就能想到手機它能夠,打電話、聽電話、看視頻、看圖片、聽音樂、發資訊等基礎功能,
但是,我們并不能知道這個手機是什么顏色、品牌、價格等具體實物,這就是類
使用紅色的5000元的華為手機,打著電話,那這個手機就是一個物件,
Python中一切皆物件,

1.類的創建
- 創建語法
-
#類的創建 ''' 注意:類名的首字母需要大寫,類名也可使用多個單詞組成,但是,每個單詞的首字母都要大寫 請遵循這個規范 ''' class Student: #使用class關鍵字創建了Student這個類 pass #Python中一切皆物件,那么這個Student是物件嗎?記憶體有開辟空間嗎? print(id(Student)) #查看是否開辟空間及其記憶體地址 1872433931728 print(type(Student)) #查看Student的資料型別 <class 'type'> print(Student) #查看Student的值 <class '__main__.Student'>
-
- 類的組成
- 類的屬性:類中方法外的變數稱為類屬性,被該類的所有物件共享
- 實體方法
- 靜態方法:使用類名直接訪問
- 類方法:使用類名直接訪問
-
class Student: native_pace = "中國" #在類里面定義的變數,稱為類屬性 #構造方法__init__(self): 當創建物件時,系統會自動呼叫該方法,從而實作對物件進行初始化 def __init__(self,name,age): self.name = name self.age = age #實體方法 在類之外定義的叫做函式,在類里面定義的叫做方法 def eat(self): #實體方法必須傳遞一個形參self,可其他名字 print("學生在吃飯") # 使用staticmethod關鍵字定義靜態方法 @staticmethod def fun(): #靜態方法不傳遞任何引數 print("使用了staticmethod進行修飾,所以我是靜態方法") #使用classmethod關鍵字定義類方法 @classmethod def cm(cls): #類方法必須傳遞一個形參cls(即class),可其他名字 print("使用了classmethod進行修飾,所以我是類方法")
2.物件的創建
- 創建類和物件
class Student: native_pace = "中國" #在類里面定義的變數,稱為類屬性 #構造方法__init__(self): 當創建物件時,系統會自動呼叫該方法,從而實作對物件進行初始化 def __init__(self,name,age): self.name = name self.age = age #實體方法 在類之外定義的叫做函式,在類里面定義的叫做方法 def eat(self): #實體方法必須傳遞一個形參self,可其他名字 print("學生在吃飯") # 使用staticmethod關鍵字定義靜態方法 @staticmethod def fun(): #靜態方法不傳遞任何引數 print("使用了staticmethod進行修飾,所以我是靜態方法") #使用classmethod關鍵字定義類方法 @classmethod def cm(cls): #類方法必須傳遞一個形參cls,可其他名字 print("使用了classmethod進行修飾,所以我是類方法") student_1 = Student("張三",20) print(id(student_1)) #查看student_1實體物件的空間地址 1229230570848(10進制)--->0x0000011E33D9FD60(16進制) print(type(student_1)) #查看student_1的資料型別 <class '__main__.Student'> print(student_1) #查看student_1實體物件的值 0x0000011E33D9FD60 可以看出實際輸出的是記憶體地址
- 物件使用類的屬性和方法
-
student_1 = Student("張三",18) print(student_1.age) #18 print(student_1.name) #張三 print(student_1.native_pace) #中國 student_1.fun() #使用了staticmethod進行修飾,所以我是靜態方法 student_1.eat() #張三 學生在吃飯 student_1.cm() #使用了classmethod進行修飾,所以我是類方法 #使用類名呼叫方法 Student.eat(student_1) #張三 學生在吃飯 #類方法的使用方法 Student.cm() #靜態方法的使用方法 Student.fun()
-
- self引數:
- 類的所有方法都必須至少有一個名為self的引數,并且必須是方法的第一個引數,
- 如果把類比作制造汽車的圖紙,那么由實體化的物件才是正真可以開的汽車,根據一張圖紙可以設計出千千萬萬的汽車,他們長得都差不多,但是它們都有不同的屬性,如顏色不同、內飾不同、所以self就相當于每輛車的編號,有了self,就可以輕輕松松找到對應的車了,
- 在Python中,由同一個類可以生成無數個物件,當一個物件的方法被呼叫時,物件會將自身的參考作為第一個引數傳遞給該方法,那么Python就知道需要操作哪個物件的方法了,
3.動態系結屬性和方法
#為物件stu_1動態系結屬性gender stu_1.gender = "女" print(stu_1.gender) #print(stu_2.gender) #報錯,因為實體化物件stu_2并沒有屬性gender #為物件stu_1動態系結函式,注意:show函式要提前定義好,否則在賦值時,會拋出例外 def show(): print("這是一個被",stu_1,"系結的show函式") stu_1.show = show stu_1.show() #stu_2.show() #此處代碼報錯,因為物件str_2并沒有系結show函式
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/325248.html
標籤:Python
