類方法,普通方法和靜態方法

2021-10-02 03:42:03 字數 1918 閱讀 3238

類方法,普通方法和靜態方法

class game(object):

# 類屬性

num = 0

# 例項方法(必須得有引數,)

def __init__(self):

# 例項屬性

self.name = "laowang"

# 例項方法(必須得有引數(第乙個引數傳遞的是當前的物件))

# def __init__(a):

#     # 例項屬性

#     a.name = "laowang"

# 類方法(類擁有,物件共有。必須得有引數(第乙個引數傳遞的是當前的物件))

@classmethod

def add_num(cls):

cls.num = 100

# 靜態方法(可以有引數,可以沒引數)

@staticmethod

def print_menu():

print("----------------------")

print("    穿越火線v11.1")

print(" 1. 開始遊戲")

print(" 2. 結束遊戲")

print("----------------------")

game = game()

# game.add_num()#可以通過類的名字呼叫類方法

game.add_num()  # 還可以通過這個類建立出來的物件 去呼叫這個類方法

print(game.num)

# game.print_menu()#通過類 去呼叫靜態方法

game.print_menu()  # 通過例項物件 去呼叫靜態方法

"""100

----------------------

穿越火線v11.1

1. 開始遊戲

2. 結束遊戲

----------------------

"""class game(object):

# 類屬性

num = 0

# 例項方法(必須得有引數,)

def __init__(self):

# 例項屬性

self.name = "laowang"

# 例項方法(必須得有引數(第乙個引數傳遞的是當前的物件))

# def __init__(a):

#     # 例項屬性

#     a.name = "laowang"

# 類方法(類擁有,物件共有。必須得有引數(第乙個引數傳遞的是當前的物件))

@classmethod

def add_num(cls):

cls.num = 100

# 靜態方法(可以有引數,可以沒引數)

@staticmethod

def print_menu():

print("----------------------")

print("    穿越火線v11.1")

print(" 1. 開始遊戲")

print(" 2. 結束遊戲")

print("----------------------")

game = game()

# game.add_num()#可以通過類的名字呼叫類方法

game.add_num()  # 還可以通過這個類建立出來的物件 去呼叫這個類方法

print(game.num)

# game.print_menu()#通過類 去呼叫靜態方法

game.print_menu()  # 通過例項物件 去呼叫靜態方法

"""100

----------------------

穿越火線v11.1

1. 開始遊戲

2. 結束遊戲

----------------------

"""

python中的普通方法 類方法和靜態方法的區別

面試中遇到這個問題,現在來總結一下 普通方法 預設有個self引數,只有類的物件可以呼叫 類方法 需要加上 classmethod裝飾器,預設cls引數,可以被類和物件呼叫 靜態方法 用 staticmethod裝飾器,類的靜態方法沒有引數,可以直接使用類名呼叫 不管是普通方法還是類方法,預設的se...

類方法和靜態方法

通過靜態方法和類方法能夠把相關的函式封裝到乙個類裡面,有效的將 組織起來,提高 的可維護性 class date object def init self,year,month,day self.year year self.month month self.day day 普通方法 def ech...

例項方法 類方法和靜態方法

1 例項方法,即需要通過建立例項 物件 進行呼叫的方法。下方即為例項方法的例子 class person object def init self self.name zs self.age 10 p person print p.name,p.age 2 類方法,即在定義方法時使用 classme...