Python 中的例項方法 類方法 靜態方法的區別

2021-10-23 17:03:16 字數 1261 閱讀 2923

1、關於引數的區別

例項方法:定義例項方法是最少有乙個形參 ---> 例項物件,通常用 self

類方法:定義類方法的時候最少有乙個形參 ---> 類物件,通常用 cls

靜態方法:定義靜態方法的時候可以不定義形參

2、關於方法定義時候新增裝飾器的區別

例項方法:不需要新增裝飾器

類方法:需要新增裝飾器 ----> @classmethod

靜態方法:需要新增裝飾器 ---> @staticmethod

3、呼叫:

1.例項方法可以通過物件直接呼叫

2.但是用類名呼叫的時候,需要建立乙個物件,並且在傳遞引數的時候要將物件傳遞進去

3.類方法可以通過類名直接呼叫,也可以通過物件來呼叫

4.靜態方法可以通過類名直接呼叫,也可以通過物件來呼叫

4、補充

1.靜態方法不可以繼承  

2.類方法不能訪問例項變數,只能訪問類變數

class dog():

age = 3 # 類變數

def __init__(self):

self.name = "xiaobai" # 例項變數

def run(self): # 例項方法

print("{} years old's {} is running!".format(self.age,self.name))

@classmethod

def eat(cls):

# print(cls.name) # 類方法,不能訪問例項變數(屬性)

print("xiaohei is {} years old".format(cls.age)) # 類方法只能訪問類變數

@staticmethod

def sleep(name):

# 靜態方法與類無關,只能類中的乙個功能而已

# 靜態方法不能訪問類變數和例項變數

print("{} is sleeping".format(name))

d = dog()

d.run() # 通過例項化物件呼叫例項方法

dog.run(d) # 通過類名稱呼叫例項方法,需要在方法中傳入例項物件

d.eat() # 通過例項化物件呼叫類方法

dog.eat() # 通過類名稱呼叫類方法

d.sleep("xiaolan") # 通過例項化物件呼叫靜態方法

dog.sleep("xiaolan") # 通過類名稱呼叫靜態方法

python中的例項方法 類方法 靜態方法

class test object a 1 def init self,a self.a a definstance print self print self.a classmethod defclass fun cls print cls.a staticmethod defstatic fun...

python中的例項方法 類方法和靜態方法

3 類方法 例項方法或者叫物件方法,指的是我們在類中定義的普通方法。只有例項化物件之後才可以使用的方法,該方法的第乙個形參接收的一定是物件本身 1 格式 在方法上面新增 staticmethod 2 引數 靜態方法可以有引數也可以無引數 3 應用場景 一般用於和類物件以及例項物件無關的 4 使用方式...

python中例項方法 類方法 靜態方法的區別

不說廢話,直接上 class test object a a definstance fun self print self.a print self print self.class fun classmethod defclass fun cls print cls.a print cls pr...