新聞中心
看到cat我相信小伙伴就會想到dog,畢竟我們前兩篇剛剛講說。cat和dog的用法差不多,相信本次小伙伴們的學(xué)習(xí)會進行的非常順利。本期我們也會從最基本的定義講起,等大家了解的基本的用法,再進行代碼的實戰(zhàn)教學(xué)。內(nèi)容篇幅比較長,不過小編相信大家的實力都是沒有問題的。

成都創(chuàng)新互聯(lián)專注于企業(yè)營銷型網(wǎng)站建設(shè)、網(wǎng)站重做改版、常德網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、H5開發(fā)、商城網(wǎng)站定制開發(fā)、集團公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)公司、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為常德等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
這里定義了Cat類和它的子類Blackcat,主要說明兩個主題:私人屬性、方法的繼承與覆蓋
私人屬性的使用是受到一定限制的,這里主要說明在哪些地方可以用,哪些地方不能調(diào)用
因為子類繼承父類時,會將父類的所有方法都繼承過來,但是如果在子類中定義了一個和父類同名的方法,則會將父類的方法覆蓋下去,__init__也是如此
定義類
class Cat(Animal):
def __init__(self, weight): # 覆蓋了父類的__init__,所以定義實例時不需要指定name和age
self.__weight = weight
self._weight = weight + 1
self.weight = self._weight + 1
def get_myweight(self):
print("My weight is", self._weight, "kg")
def get_trueweight(self):
print("Actually the cat's weight is",self.__weight)
@staticmethod
def print_cat():
print("這個類是Animal類的子類,也是Blackcat類的父類")
print("Cat類和Blackcat類結(jié)合,主要用于講解私人屬性、方法的繼承與覆蓋")
print("weight是普通屬性,可以在外部訪問,即用類調(diào)用屬性獲得,可以被子類內(nèi)部調(diào)用")
print("_weight這樣前面加一個下劃線表示希望你不要在外部訪問它,但是還是可以訪問的,可以被子類內(nèi)部調(diào)用")
print("__weight這樣加兩個下劃線的是不允許外部訪問的,只可以在類中被調(diào)用,不可以被子類內(nèi)部調(diào)用")
print("__init__在子類中定義則覆蓋了父類中的__init__,不需要指定父類中的屬性,也無法調(diào)用父類的屬性")
print("在子類中實現(xiàn)和父類同名的方法,也會把父類的方法覆蓋掉")
class Blackcat(Cat):
def get_weight(self):
print("My weight is", self.weight)
def get_weight_again(self): # 可以
print("Actuall my weight is", self._weight)
def get_true_weight(self): # 這個方法因為無法調(diào)用self.__weight所以這個方法無法使用
print("My weight is exactly", self.__weight)
def get_trueweight(self): # 覆蓋了Cat父類中定義的方法
print("My weight is exactly", self._weight+1)
創(chuàng)建實例
# 測試私人變量的外部訪問 cole = Cat(5) cole.weight # 7 cole._weight # 6 cole.get_trueweight() # 在類中引用__weight,用這個方法返回 # Actually the cat's weight is 5 cole._Cat__weight # 非要訪問也可以,其實是python解釋器把__weight改成了_Cat__weight # 5 # 測試私人變量的子類調(diào)用 cain = Blackcat(5) cain.get_weight() # My weight is 7 cain.get_weight_again() # Actuall my weight is 6 # cain.get_true_weight() # 報錯 # 測試方法的繼承與覆蓋 cain.get_myweight() # # My weight is 6 kg cain.get_trueweight() # 子類中同名函數(shù)覆蓋父類 # My weight is exactly 7
以上就是python3類中的Cat變量的使用,具體的測試方法都在上面,大家可以逐個代碼復(fù)制測試,相信大家都可以成功測試出結(jié)果,小編在這里等待大家的互動~
本文名稱:創(chuàng)新互聯(lián)Python教程:python3類中的Cat變量使用有限制嗎?
網(wǎng)頁路徑:http://www.dlmjj.cn/article/dhoshis.html


咨詢
建站咨詢
