python學習之-類的定義對物件的概念
類的定義格式
class Setset: #Python中類名推薦使用駝峰體,函式卻不推薦使用駝峰體
類的定義例項
class OldboyStudent:
# 相似的特徵:
school = 'oldboy'
# 相似的技能
def choose_course(self):
print('choosing course....')
print('=====run=======>')
PS:類體程式碼在類定義階段就會立即執行,會產生類的名稱空間,用來將類體程式碼執行過程中產生的名字都存放起來
print(OldboyStudent.school) #可以通過類直接檢視類體下的變數的記憶體地址
print(OldboyStudent.choose_course) #可以通過類直接檢視類體下函式的記憶體
OldboyStudent.choose_course(1231) #呼叫方式和函式一樣加括號,也可以傳入引數
類的用途一
類的本質就是一個名稱空間,所以第一種用途就是使用其內部的名字,類名.名字
OldboyStudent.school='OLDBOY' #也可以直接修改類體下面變數的值
del OldboyStudent.school #也可以直接刪除類體下的變數
OldboyStudent.xxx=111 #原理就是往類的名稱空間內新增了一個key=value的值,本質的操作就是在類下面新增了一個值
print(OldboyStudent.school.__dict__['school']) #可以檢視到值,但是不推薦這種麻煩的操作方式,還是遵循Python標準的訪問語法即類名 +' . ' + 名字的方式
PS:類下有一個.__dict__方法,就是檢視類的名稱空間記憶體的名字,以字典形式存放
print(OldboyStudent.school) #推薦用這種方法去呼叫
PS:OldboyStudent.school本質就是去OldboyStudent.school的名稱空間內找一個對應的字串形式的key,這就是呼叫原理
PS:Python中呼叫類,格式體.後面的全部成為屬性即OldboyStudent.school後面的school稱之為屬性
類的用途二
呼叫類來產生物件
呼叫類發生的事:會有一個返回值,該返回值就一個物件
stu1=OldboyStudent() #這裡先將類放入一個變數中
stu2=OldboyStudent()
stu3=OldboyStudent()
PS:每呼叫一次就會產生一個記憶體地址,每次呼叫的記憶體地址都是不同的
物件的本質也是一個名稱空間
stu1.name='王三炮' #直接在類中新增變數值
stu1.gender='male'
stu1.age=38
stu2.name='王二炮'
stu2.gender='male'
stu2.age=18
stu3.name='王大炮'
stu3.gender='female'
stu3.age=48
print(stu1.__dict__) #檢視名稱空間內的名字,可以檢視有沒有增加成功
print(stu2.__dict__)
print(stu3.__dict__)
print(stu1.name) #這個就是呼叫檢視stu1下的name的值
總結:
類的本質是一個名稱空間,物件的本質也是一個名稱空間
屬性查詢
print(stu1.name) #就是去名稱空間查找了一個對應的key,如果本身有name這個屬性,則查詢成功,如果本身沒有則找到類中,如果類中沒有則報錯
print(stu1.choose_course)