類其實也是一種封裝的思想,類就是把變量、方法等封裝在一起,然后可以通過不同的實例化對其進行調用操作。
1.類的定義
class 類名:
? ? ? ? 變量a
? ? ? ? def??__init__??(self,參數2,參數2...):初始化函數!!!
? ? ? ? 其他方法函數。。。
注意:初始化函數只要是實例化調用該類,就會
2.類的實例化
實例化對象=類(參數)? #具體傳參與否,傳幾個是要看 初始化函數 里面有幾個參數需要
3.類變量 vs 實例化變量
一般在類中單獨出現的就是類變量,類變量不會隨著不同的實例化對象而改變,一般在類中的調用寫法為“類名.變量”;
實例化變量一般是在類的方法中出現的,不同的實例化對象對應的變量一般不同,一般在類中的寫法為“self.變量名”
有時類變量和實例化變量的變量名相同,具體是類變量還是實例化變量要具體分析。
例子如下:
class people:name = "張三" # 公共類變量__private_name = "李四"def __init__(self,name):self.name = name #只是與上面那個變量名字重了,不是一個東西(不管是self后面的還是等號后面的)self.__private_name = name #私有變量約定寫法為 “__變量名”print("已經執行的初始化方法啦!")def canshu(self):print("公共類變量 是{},類變量是不會隨著不同的實例化對象的 “傳參” 而改變的,但是允許修改".format(people.name))print("公共實例化變量 是 {},""實例化變量的name值是與people類中第一處定義的“張三”不是一個變量,只是名字重了,""他會隨著傳入的參數而改變".format(self.name))print("私有實例化變量是{}".format(self.__private_name))people1=people("王五")#傳入參數
print(people1.name)#這個是people1的name,是實例化變量,因此打印的是傳入的參數,是init初始化里面的參數信息,不是類變量
people1.canshu()
4.繼承?
繼承就是子類雖然不寫父類的方法、變量,但是實例化后,可以調用父類定義的方法、變量,也可以對其進行改寫。
子類繼承父類的寫法:
class son_classname (father_classname):
? ? ? ? ......
? ? ? ? def __init__(self,...):
? ? ? ? ? ? ? ? .......
? ? ? ? .....
class father:father_temp = "父類類變量father_temp"father_temp1 = "父類的變量father_temp1 "def __init__(self):print("父類初始化函數")def f_func(self):print("父類的普通方法1")def f_func2(self, a):self.a = aprint("父類的實例化變量{}".format(a))class son(father):son_temp = "子的類變量son_temp "father_temp = "改變了父類的類變量father_temp————>son_ father_temp"def __init__(self):print("子類初始化函數")def s_func(self):print("子類普通方法")father1=father()
son1 = son()
son1.s_func()
print("------------------------------------")#子類繼承父類的函數方法,所以在子類不寫,也可調用此方法
son1.f_func()
son1.f_func2("son")
print("------------------------------------")
print(son1.son_temp)#子類的類變量
print(son1.father_temp1)#子類繼承父類的類變量
print(son1.father_temp)#子類繼承并改寫父類的類變量
print("-------------------------------------")
print(father1.father_temp)