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(類對象,默認參數)
上圖中實例對象是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對象,故可由對象直接調用實例方法
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 #輸出"使用靜態方法"
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方法