程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

python-最後的面向對象

編輯:Python

還有最後一篇,補充知識,最後了!!!加油!!!

文章目錄

  • 面向對象三答特性
    • 封裝
    • 繼承
    • 多態
  • 多態
    • 了解多態
    • 體驗多態
  • 類屬性和實例類
    • 類屬性
      • 設置和訪問類屬性
      • 修改類屬性
  • 類方法和靜態方法
    • 類方法
      • 類方法的特點
      • 類方法使用場景
    • 靜態方法
      • 靜態方法特點
      • 靜態方法使用場景
  • 結語

面向對象三答特性

封裝

  • 將屬性和方法書寫到類的裡面的操作即為封裝
  • 封裝可以為屬性和方法添加私有權限

繼承

  • 子類默認繼承父類的所有屬性和方法
  • 子類可以重寫父類屬性和方法

多態

  • 傳入不同的對象,產生不同的結果

多態

了解多態

多態指的是一類事物有多種形態,(一個抽象類有多個子類,因而多態的概念依賴於繼承)。

  • 定義:多態是一種使用對象的方式,子類重寫父類方法,調用不同子類對象的相同父類方法,可以產生不同的執行結果。
  • 好處:調用靈活,有了多態,更容易編寫出通用的代碼,做出通用的編程,以適應需求的不斷變化!
  • 實現步驟:
    定義父類,並提供方法
    定義子類,並重寫方法類
    傳遞子類對象給調用者,可以看到不同子類效果不同

體驗多態

# 定義父類
class Dan():
def do(self):
print('蛋')
# 繼承父類,重寫父類同名方法
class TxDan(Dan):
def do(self):
print('沸水中煮5分鐘')
class JianDan(Dan):
def do(self):
print('用油煎蛋至金黃')
# 傳入不同的對象,執行不同的代碼,即不同的do函數
class Person():
def do_dan(self,dan):
dan.do()
txd = TxDan()
jd = JianDan()
# 傳入不同的對象
xl = Person()
xl.do_dan(txd) # 沸水中煮5分鐘
xl.do_dan(jd) # 用油煎蛋至金黃

類屬性和實例類

類屬性

設置和訪問類屬性

  • 類屬性就是類對象所擁有的屬性,它被該類的私有實例對象所共有。
  • 類屬性可以使用類對象實例對象訪問。
# 1. 定義類:定義類屬性
class Food():
weight = '10斤'
# 創建對象
pig = Food()
chicken = Food()
# 訪問類實現:類和對象
print(Food.weight) # 10斤
print(pig.weight) # 10斤
print(chicken.weight) # 10斤

修改類屬性

類只能通過類對象修改,不能通過實例對象修改,如果通過實例對象修改屬性,表示的是創建一個實例屬性。

class Food():
weight = '10斤'
pig = Food()
chicken = Food()
# 修改類屬性
# 類.類屬性 = 值
Food.weight = '12斤'
print(Food.weight) # 12斤
print(pig.weight) # 12斤
print(chicken.weight) # 12斤
# 不能通過對象修改屬性,如果這樣操作,則是創建了一個實例屬性
# 對象.類屬性 = 值
pig.weight = '20斤'
print(Food.weight) # 12斤
print(pig.weight) # 20斤
print(chicken.weight) # 12斤

類方法和靜態方法

類方法

類方法的特點

  • 需要用裝飾器@classthod來標識其為類方法,對於類方法,第一個參數必須是類對象,一邊以cls作為第一個參數。

類方法使用場景

  • 當方法中需要使用類對象(如范根是由類屬性等)時,定義類方法
  • 類方法一般和類屬性配合使用
class Food():
__weight = 10
@classmethod
def add_weight(cls,num):
cls.__weight += num
return cls.__weight
pig = Food()
result = Food.add_weight(5)
print(result) # 15

靜態方法

靜態方法特點

  • 需要通過裝飾器@staticmethod來進行修飾,靜態方法既不需要傳遞類對象也不需要傳遞實例對象(形參沒有self/cls)
  • 靜態方法 也能通過 實例對象類對象 去訪問

靜態方法使用場景

  • 當方法中既不需要使用實例對象(如實例對象,實例屬性),也不需要使用類對象(如類屬性、類方法、創建實例等)時,定義靜態方法
  • 取消不需要的參數傳遞,有利於減少不必要的內存占用和性能消耗
class Food(object):
@staticmethod
def info_food():
print('這裡是肉肉')
pig = Food()
pig.info_food() # 這裡是肉肉
Food.info_food() # 這裡是肉肉

結語

這就是全部的內容啦!!!恭喜大家畢業


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved