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...