程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

【python學習10】類與對象

編輯:Python

(一)類與對象介紹

(二)類和對象的深入 

 

 1,兩大編程思想

 

 2,類和對象的創建

(1)類的創建

Student是類的名稱(簡稱類名),類名由一個或多個單詞組成,每個單詞的首字母大寫其余小寫 (python中的規范)

對象本身具有內存空間,數據類型,數值

class Student: #類名由一個或多個單詞組成,每個單詞的首字母大寫其余小寫 (python中的規范)
native_place="abc" #直接寫在類裡的變量,是類屬性
#初始化方法
def __init__(self,name,age): #()中的self是實例對象,name、age是局部變量
self.name=name #self.name稱為實例屬性,賦值操作,將局部變量name的值賦給實例屬性
self.age=age
#實例方法
def eat(self): #定義類的實例方法,和函數定義類似,實例方法要寫self,即實例對象
print("吃飯")
#靜態方法
@staticmethod #靜態方法前用@staticmethod修飾
def method(): #靜態方法中不能寫self
print("使用靜態方法")
#類方法
@classmethod #類方法前用@classmethod修飾
def cm(cls): #類方法要寫cls,即類對象
print("類方法")

①直接寫在 類裡但在方法外 的變量 稱為 類屬性

②初始化方法__init__(self,name,age)有默認參數self(指實例對象),詳解見上方代碼注釋

③def在 類裡面 是類的實例方法,在 類的外面是函數

④靜態方法 要 用@staticmethod修飾,類方法 要 用@classmethod修飾

⑤實例方法()內必須是self對象(實例對象,默認參數),靜態方法()必須不寫self,類方法()要寫cls(類對象,默認參數)

(2)對象的創建

上圖中實例對象是stu, 類對象是Student

class Student: #類名由一個或多個單詞組成,每個單詞的首字母大寫其余小寫 (python中的規范)
native_place="abc" #直接寫在類裡的變量,是類屬性
#初始化方法
def __init__(self,name,age): #()中的name,age是局部變量
self.name=name #self.name稱為實例屬性,賦值操作,將局部變量name的值賦給實例屬性
self.age=age
#實例方法
def eat(self): #定義類的實例方法,和函數定義類似,實例方法要寫self
print("吃飯")
#靜態方法
@staticmethod #靜態方法前用@staticmethod修飾
def method(): #靜態方法中不能寫self
print("使用靜態方法")
#類方法
@classmethod #類方法前用@classmethod修飾
def cm(cls):
print("類方法")
stu=Student("abc",20) #因為類中的初始化方法有name和age兩個局部變量,因此用"abc",20初始化
#調用實例方法,由於實例方法傳遞的是self對象,故可由對象直接調用實例方法
stu.eat() #輸出"吃飯"
print(stu.name) #輸出"abc"
ptint(stu.age) #輸出20

 由於實例方法傳遞的是self對象,故可由對象直接調用實例方法

3,類屬性,類方法,靜態方法

 

class Student: #類名由一個或多個單詞組成,每個單詞的首字母大寫其余小寫 (python中的規范)
native_place="abc" #直接寫在類裡的變量,是類屬性
#初始化方法
def __init__(self,name,age): #()中的name,age是局部變量
self.name=name #self.name稱為實例屬性(實例變量),賦值操作,將局部變量name的值賦給實例屬性
self.age=age
#實例方法
def eat(self): #定義類的實例方法,和函數定義類似,實例方法要寫self
print("吃飯")
#靜態方法
@staticmethod #靜態方法前用@staticmethod修飾
def method(): #靜態方法中不能寫self
print("使用靜態方法")
#類方法
@classmethod #類方法前用@classmethod修飾
def cm(cls):
print("類方法")
#類屬性的調用,類屬性由所有該類的實例對象所共享
stu1=Student("abc","18")
stu2=Student("wsx","20")
print(stu1.native_place) #輸出“abc”
print(stu2.native_place) #和上面一樣
Student.native_place="tyu"
print(stu1.native_place) #輸出“tyu”
print(stu2.native_place) #和上面一樣
#類方法的調用,由於類方法傳遞的是cls對象即類對象,故要用類名調用類方法
Student.cm #直接輸出"類方法"
#靜態方法的使用方式,由於沒有默認參數,故使用類名調用方法
Student.method #輸出"使用靜態方法"

4,動態綁定屬性和方法

class Student: #類名由一個或多個單詞組成,每個單詞的首字母大寫其余小寫 (python中的規范)
native_place="abc" #直接寫在類裡的變量,是類屬性
#初始化方法
def __init__(self,name,age): #()中的name,age是局部變量
self.name=name #self.name稱為實例屬性(實例變量),賦值操作,將局部變量name的值賦給實例屬性
self.age=age
#實例方法
def eat(self): #定義類的實例方法,和函數定義類似,實例方法要寫self
print("吃飯")
stu1=Student("張三",20)
stu2=Student("李四",30)
#動態綁定屬性
stu2.gender="女"
print(stu2.name,stu2.age,stu2.gender)
print(stu1.name,stu1.age,stu1.gender)#報錯,因為stu1沒有gender屬性
def show:
print("類之外是函數")
#動態綁定方法
stu1.show=show
print(stu1.show) #輸出"類之外是函數"
print(stu2.show) #報錯,因為stu2沒有綁定show方法

(三)總結


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved