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

2021-07-30 16:53:51 字數 1461 閱讀 5076

class

foo(object):

deftest

(self)://定義了例項方法

print("object")

@classmethod

deftest2

(clss)://定義了類方法

print("class")

@staticmethod

deftest3

()://定義了靜態方法

print("static")

1、例項方法就是類的例項能夠使用的方法。例項方法的兩種呼叫方式:

ff.test();//通過例項呼叫

foo.test(ff)//直接通過類的方式呼叫,但是需要自己傳遞例項引用

2、靜態方法是一種普通函式,就位於類定義的命名空間中,它不會對任何例項型別進行操作。使用裝飾器@staticmethod定義靜態方法。類物件和例項都可以呼叫靜態方法,

類方法的呼叫方式:

foo.test2();
如果foo有了子類並且子類覆蓋了這個類方法,最終呼叫會呼叫子類的方法並傳遞的是子類的類物件。

class

foo2

(foo):

@classmethod

deftest2

(self):

print(self)

print("foo2 object")

f2=foo2()

print(f2.test2())

輸出是:

'__main__.foo2'>

foo2 object

3、類方法是將類本身作為物件進行操作的方法。類方法使用@classmethod裝飾器定義,其第乙個引數是類,約定寫為cls。類物件和例項都可以呼叫類方法,

靜態方法的呼叫方式:

ff.test3()
歸納如下:

呼叫方式:

三種方法都可以通過例項來呼叫

普通方法不能通過類名呼叫,但是靜態方法和類方法是可以的

許可權:

靜態方法和類方法無法訪問例項屬性

類方法可以訪問類屬性,但是靜態方法不可以訪問類屬性

#普通方法,可以通過self訪問例項屬性

defnormalmethod

(self,data)

#類方法,可以通過cls訪問類屬性

@classmethod

defclassmethod

(cls,data)

#靜態方法,不可以訪問,通過傳值的方式

@staticmethod

defstaticmethod

(data)

Python類方法 靜態方法 例項方法

靜態方法是指類中無需例項參與即可呼叫的方法 不需要self引數 在呼叫過程中,無需將類例項化,直接在類之後使用.號運算子呼叫方法。通常情況下,靜態方法使用 staticmethod裝飾器來宣告。class classa object staticmethod def func a print hel...

Python例項方法,類方法,靜態方法

class foo object def test self 定義了例項方法 print object classmethod def test2 cls 定義了類方法 print class staticmethod def test3 定義了靜態方法 print static 1 例項方法就是類...

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

class testclassmethod object method method hoho def init self self.name leon def test1 self print test1 print self classmethod def test2 cls print cls...