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

2021-09-28 22:19:24 字數 1387 閱讀 7122

class foo(object):

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

print("object")

@classmethod

def test2(cls)://定義了類方法

print("class")

@staticmethod

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

print("static")

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

f=foo()//例項化類

f.test()//通過例項呼叫

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

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

類方法的呼叫方式:

foo.test2();

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

class foo2(foo):

@classmethod

def test2(self):

print(self)

print("foo2 object")

f2=foo2()

print(f2.test2())

輸出是:

foo2 object

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

靜態方法的呼叫方式:

ff.test3()

foo.test3

歸納如下:

呼叫方式:

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

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

許可權:靜態方法和類方法無法訪問例項屬性

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

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

def normalmethod(self,data)

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

@classmethod

def classmethod(cls,data)

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

@staticmethod

def staticmethod(data)

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

class foo object deftest self 定義了例項方法 print object classmethod deftest2 clss 定義了類方法 print class staticmethod deftest3 定義了靜態方法 print static 1 例項方法就是類的例...

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

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

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