實例方法、類方法和靜態方法區別


 

class A:
# 實例方法:
  def f1(self):
    return 1
# 類方法:
  @classmethod
  def f2(cls):
    return 2
# 靜態方法
  @staticmethod
  def f3():
    return 3
 
a = A()
 
a.f1() # => 1
A.f1(a) # => 1
a.f2() # => 2
A.f2() # => 2
a.f3() # => 3
A.f3() # => 3
  • 實例方法(也叫成員方法,用於描述對象的固有行為):默認將當前實例對象傳遞為第一個參數
  • 類方法(類方法在定義時,方法在上面必須添加@classmethod):默認將當前類傳遞為第一個參數
  • 靜態方法(靜態方法在定義時,方法在上面必須添加@staticmethod): 沒有默認的第一個參數

實例方法調用格式:

  對象名.方法名()

類方法調用格式:

  類名.方法名(參數) 推薦使用方法

  對象名.方法名(實參)不推薦使用

注意:

(1)類方法定義在勒種,不屬於某個對象的具體行為,可以被所有對象共同使用的行為

(2)類方法中不允許使用實例變量和實例方法,實例方法中允許使用類變量和類方法,推薦使用類名調用

(3)實例方法中允許使用類變量和類方法

靜態方法調用格式:

  類名.方法名(實參) 推薦使用

  對象名.方法名(實參)不推薦使用


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM