1. 程式人生 > 程式設計 >Python 類方法和例項方法(@classmethod),靜態方法(@staticmethod)原理與用法分析

Python 類方法和例項方法(@classmethod),靜態方法(@staticmethod)原理與用法分析

本文例項講述了Python 類方法和例項方法(@classmethod),靜態方法(@staticmethod)。分享給大家供大家參考,具體如下:

demo.py(類方法,@classmethod):

class Tool(object):
  # 使用賦值語句定義類屬性,記錄所有例項化工具物件的數量
  count = 0
  # @classmethod 定義類方法. 第一個引數是cls (cls用於訪問類屬性和類方法,不能訪問例項屬性/方法)
  @classmethod
  def show_tool_count(cls):
    # 不能訪問例項屬性
    print("工具物件的數量 %d" % cls.count) # cls.類屬性名 訪問類屬性(類方法中)
  def __init__(self,name):
    self.name = name # 例項屬性
    # 類名.類屬性名 訪問類屬性(例項方法中)
    Tool.count += 1
# 例項化工具物件
tool1 = Tool("斧頭")  # tool1.__class__屬性指向類物件。 tool1.__class__.count例項物件訪問類屬性
tool2 = Tool("榔頭")
# 類名.類方法 呼叫類方法
Tool.show_tool_count()

執行結果:

工具物件的數量 2

demo.py(靜態方法,@staticmethod):

class Dog(object):
  # @staticmethod 定義靜態方法;靜態方法內部不能訪問類屬性/方法和例項屬性/方法。不需要傳預設引數。
  # Python中的靜態方法與在類外部定義的普通函式作用相同,只是表明該函式僅供該類使用。
  @staticmethod
  def run():
    # 不能訪問例項屬性/類屬性
    print("小狗要跑...")
# 類名.靜態方法名 呼叫靜態方法,不需要建立物件 (也可以通過例項物件呼叫)
Dog.run()

執行結果:

小狗要跑...



更多關於Python相關內容感興趣的讀者可檢視本站專題:《Python面向物件程式設計入門與進階教程》、《Python資料結構與演算法教程》、《Python函式使用技巧總結》、《Python字串操作技巧彙總》、《Python編碼操作技巧總結》及《Python入門與進階經典教程》

希望本文所述對大家Python程式設計有所幫助。