首先定義一個名為Student的類
專注于為中小企業(yè)提供成都網(wǎng)站設(shè)計、做網(wǎng)站服務(wù),電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)綏江免費做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了上千家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。class Student:
#__init__函數(shù)是類的構(gòu)造函數(shù),在實例化的時候做一些初始化工作
num = 1123 #類變量
name = 'wu'
def __init__(self, name,age):
self.name = name #實例變量,作用域是實例本身
self.age = age
def get_score(self): #類方法
print("score = 99")
上邊這個類Student是類名類名一般要大寫這個是規(guī)范。
有幾個注意的點:
1. 類的屬性
2. 實例化
3. 類變量與實例變量(修改類變量)
4. 類的__init__方法(也叫構(gòu)造函數(shù))
5. 類變量的作用
6. 析構(gòu)函數(shù)
7. 私有屬性
8. 私有方法
1.類的屬性
類的屬性分靜態(tài)屬性和動態(tài)屬性,類里的實例變量和類變量都是靜態(tài)屬性。類里邊的方法是類的動態(tài)屬性。
2 . 實例化
p1 = Student("haha",20) #實例化得到p1這個對象
3 . 類變量與實例變量(修改類變量)
直接放在類里的是類變量,在__init__函數(shù)里的是實例變量
類變量相當(dāng)于一個默認(rèn)值, 當(dāng)類變量跟實例變量是同一個變量名的時候
對于當(dāng)前這個對象來說實例變量覆蓋了類變量的值,也就是說優(yōu)先找實例變量,
只有在實例變量不存在的情況下才會找類變量
print(p1.num,p1.name)
這個語句輸出:1123 haha
類變量有一個name 實例變量也有一個name,先找實例變量
這個時候如果修改類變量num的值
先實例化一個變量 p2 = Student("xixi",30)
p1.num = 10
print(p1.num,p1.name)
print(p2.num,p2.name)
結(jié)果:
10 haha
1123 xixi
類變量并沒有改變,這里的 p1.num = 10相當(dāng)于給p1這個對象定義了一個實例屬性num
修改了值修改了值,并不會影響其他對象。因為它的作用域是實例本身
要是真的想修改類變量應(yīng)該怎么寫呢?
Student.num = 20這樣就修改了類變量的值
4 . 類的init函數(shù)
類的__init__方法也叫構(gòu)造函數(shù),
什么是構(gòu)造函數(shù),是一種特殊的函數(shù)。 主要用來在創(chuàng)建對象時初始化對象,
即為對象成員變量賦初始值。
5.類變量的作用
定義公共屬性,這樣在對象實例化的時候,就不用再copy一份數(shù)據(jù),節(jié)省內(nèi)存開銷。
6.析構(gòu)函數(shù)
類的__del__方法是析構(gòu)函數(shù),在c和c++中沒有垃圾回收機制,
所以程序員寫代碼時必須定義析構(gòu)函數(shù)來做內(nèi)存的釋放工作。
而在java和python中,本身就實現(xiàn)了垃圾回收機制,java中由java虛擬機來回收內(nèi)存,python 中則由python解釋器來回收資源。
所以在python當(dāng)中默認(rèn)不需要定義析構(gòu)函數(shù),
Python 會提供默認(rèn)析構(gòu)函數(shù)。如果有特殊需要可以定義一個__del__方法
在實例對象調(diào)用結(jié)束時做一些掃尾工作。
析構(gòu)函數(shù)會在對象作用域中調(diào)用結(jié)束時自動調(diào)用來釋放內(nèi)存,無需手動調(diào)用。
如果要顯式的調(diào)用析構(gòu)函數(shù),可以使用del關(guān)鍵字: del obj
這里del調(diào)用其實不是直接去釋放內(nèi)存,而是減少引用計數(shù),
由垃圾回收機制來回收內(nèi)存
7.私有屬性
類的屬性分靜態(tài)屬性和動態(tài)屬性,通常我們說類的屬性通常都是指類的靜態(tài)屬性。
現(xiàn)在來說私有屬性,定義類的私有屬性就是屬性前面加上__雙下劃線
私有屬性在外面是不能訪問的也即類的對象是不能直接調(diào)用的屬性。
可以在類的內(nèi)部訪問并修改。
class Person:
def __init__(self,name,age,stature):
self.name = name
self.age = age
self.__stature = 1.7 #私有屬性
def get_stature(self):
return self.__stature
p1 = Person("fransics",21,1.9)
#print(p1.__stature)
print(p1.get_stature())
這個代碼片里直接print私有屬性__stature是訪問不到的會報錯。而可以通過類方法在內(nèi)部訪問并返回。
8.私有方法
前面說過了私有屬性,私有方法也類似。定義的時候可以通過函數(shù)名之前加__來完成定義。同樣是不能在外部訪問,只能內(nèi)部訪問。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。