一個簡單示例,帶你瞭解python中的類方法、靜態方法、實例方法和私有方法的區別

直接上乾貨~

from random import randint

class Game:
    '''
    類方法,不需要實例化,通過類名直接調用,使用裝飾器@classmethod修飾
    @cls: 第一個參數必須是當前類本身,參數名一般約定爲cls
    '''
    @classmethod
    def play1(cls):
        cls().__play()

    '''
    靜態方法,通過類或者實例對象調用,使用裝飾器@staticmethod修飾。
    參數隨意,沒有self和cls參數,方法體中不能使用類或實例的任何屬性和方法;
    '''
    @staticmethod
    def play2():
        print("此處無法調用本類中的其它屬性和方法")

    '''
    實例方法,必須實例化類之後才能被調用
    @self: 第一個參數必須是當前類的實例對象,參數名一般約定爲self
    '''
    def play3(self):
        self.__play()

    '''
    私有方法,以兩個下劃線開頭,只能在類的內部調用
    @self: 第一個參數必須是當前類的實例對象,參數名一般約定爲self
    '''
    def __play(self):
        print("猜數字遊戲!")
        rand_int = randint(0, 100)
        while True:
            user_guess = int(input("請輸入您猜的數字(0-100):"))
            if user_guess == rand_int:
                print(f"您猜的數字是{user_guess},恭喜您猜中了!")
                break

            if user_guess > rand_int:
                print(f"您猜的數字是{user_guess},太大了,再接再厲!")
                continue

            if user_guess < rand_int:
                print(f"您猜的數字是{user_guess},太小了,再接再厲!")
                continue

if __name__ == "__main__":
    game = Game()
    # 調用方式一
    Game.play1()    # 類調用
    game.play1()    # 實例對象調用
    # 調用方式二
    Game.play2()    # 類調用
    game.play2()    # 實例對象調用
    # 調用方式三
    game.play3()    # 實例對象調用

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章