面向Python,面向對象(基礎4(手機對象案例))

1. 類變量

1.1 類變量的概念

類變量是定義在類中,不屬於某個具體對象的特徵,被全部對象共同使用的特徵,屬於整個類的變量。python

1.2 定義類變量的語法格式

class 類名:
    變量名 = 值
複製代碼

類名下直接定義變量優化

1.3 調用類變量語法格式

賦值格式:spa

類名.類變量名 = 值code

取值格式:cdn

類名.類變量名(推薦)對象

對象名.類變量名(不推薦)blog

1.4 注意事項

  • 類變量推薦使用類名取值訪問,也可使用對象名取值訪問
  • 類變量只能經過類名修改;使用對象名調用類變量修改類變量的值時會建立新的對象獨有變量;若是此時對象具備同名對象變量,則會變成修改對應的變量值
  • 類變量能夠私有化

2. 類方法

2.1 類方法的概念

類方法是定義在類中,不屬於某個具體對象的行爲,被全部對象共同使用的行爲,類方法在類中公有。遊戲

2.2 定義類方法基本語法

class 類名:
    @classmethod
    def 類方法名(cls,形參1,形參2,...):
        類方法體
複製代碼

2.3 調用類方法語法格式

類名.類方法名(實參1,實參2,...)(推薦)string

對象名.類方法名(實參1,實參2,...)(不推薦)it

2.4 注意事項

  • 類方法中不容許使用實例變量和實例方法
  • 類方法中容許使用類變量和類方法,經過第一個參數cls進行
  • 實例方法中容許使用類變量和類方法

3. 靜態方法

3.1 定義靜態方法語法格式

class 類名:
    @staticmethod
        def 方法名(形參1,形參2,…):
            方法體
複製代碼

3.2 調用靜態方法語法格式

類名.靜態方法名(實參1,實參2,…)(推薦)

對象名.靜態方法名(實參1,實參2,…)(不推薦)

3.3 各類方法定義規則

  • 只訪問成員變量的方法,定義成實例方法
  • 只訪問類變量的方法,定義類方法
  • 既訪問成員變量,也訪問類變量的方法,定義成實例方法
  • 既不訪問成員變量,也不訪問類變量,定義成靜態方法

案例: 手機

""" 演示手機案例 要求: 手機電量默認是100 打遊戲每次消耗電量10 聽歌每次消耗電量5 打電話每次消耗電量4 接電話每次消耗電量3 充電能夠爲手機補充電量 """
# 分析
# 1. 定義類Phone
# 2. 定義變量用於描述電量值
# 3. 定義4個方法用於描述耗電操做
# 4. 定義1個方法用於描述充電操做
# 5. 運行程序,執行上述操做,觀察結果

class Phone():
    def __init__(self):
        self.hp = 100

    def game(self):
        # 打遊戲耗電10
        print("打遊戲操做,耗電10")
        self.hp -= 10
    
    def music(self):
        # 聽歌耗電5
        print("聽歌操做,耗電5")
        self.hp -= 5

    def call(self):
        # 打電話耗電4
        print("打電話操做,耗電4")
        self.hp -= 4

    def answer(self):
        # 聽歌耗電3
        print("接電話操做,耗電3")
        self.hp -= 3
    
    def charge(self, num):
        print("充電斷開,已充%d" % num)
        self.hp += num
    def __str__(self):
        return "當前手機電量爲:%d" % self.hp
# 建立一部電話,當前電量是100
p = Phone()
# 調用耗電操做
p.game()
print(p)
p.game()
print(p)
p.game()
print(p)
p.charge(10)
print(p)
複製代碼

案例:手機修復增強版

""" 演示手機修復增強版案例 要求: 手機耗電操做前要先斷定電量是否足夠完成此項任務 手機充電操做不能充電超過最大值 """
# 分析
# 1. 耗電操做以前必須進行斷定(if系列),根據結果不一樣作對應的事情
# 2. 充電操做必須進行斷定,手機電量不能超過最大值100
class Phone:
    def __init__(self):
        self.hp = 100
    
    def game(self):
    """打遊戲操做,耗電10"""
    # 斷定當前電量是否可以完成打遊戲的請求
        if self.hp >= 10:
            # 正常運行,減小電量
            print("打遊戲操做,耗電10")
            self.hp -= 10
        else:
            # 不能正常運行,給出提示
            print("當前電量不足,沒法完成操做")

    def music(self):
    # 斷定當前電量是否可以完成聽歌的請求
        if self.hp >= 5:
            # 正常運行,減小電量
            print("聽歌操做,耗電5")
            self.hp -= 5
        else:
            # 不能正常運行,給出提示
            print("當前電量不足,沒法完成操做")
    
    def call(self):
    # 斷定當前電量是否可以完成打電話的請求
        if self.hp >= 4:
            # 正常運行,減小電量
            print("打電話操做,耗電4")
            self.hp -= 4
        else:
            # 不能正常運行,給出提示
            print("當前電量不足,沒法完成操做")
    
    def answer(self):
    # 斷定當前電量是否可以完成接電話的請求
        if self.hp >= 3:
            # 正常運行,減小電量
            print("接電話操做,耗電3")
            self.hp -= 3
        else:
            # 不能正常運行,給出提示
            print("當前電量不足,沒法完成操做")
    def charge(self,num):
        # 判斷當前電量,與充電作比較
        if self.hp + num > 100:
        # 過充
            print("充電已完成,請移除充電器,當前電量爲:100")
        # 賦值100,解決過充出現150等
            self.hp = 100
        else:
        # 正常充
            print("充電斷開,充電%d" % num)
            self.hp += num
    def __str__(self):
        return "當前手機電量爲:%d" % self.hp
p = Phone()
p.game()
p.game()
p.game()
p.game()
p.game()
p.game()
p.game()
p.game()
p.game()
p.game()
print(p)
p.charge(50)
print(p)
複製代碼

案例還可優化,小問題電量=0時提示關機等,其它可自行操做。

相關文章
相關標籤/搜索