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