這三種方法都定義在類(lèi)中倔既。其中實(shí)例對(duì)象的權(quán)限最大。
下面這個(gè)類(lèi)包含了這三種方法鹏氧,從調(diào)用可以看出他們的用法渤涌。
class A(object):
bar = 1
def foo(self):
print 'foo'
@staticmethod
def static_foo():
print A.bar
@classmethod
def class_foo(cls):
cls().foo()
A.static_foo()
A.class_foo()
a = A()
a.foo()
實(shí)例方法/對(duì)象方法
- 定義:
- 實(shí)例方法也稱(chēng)對(duì)象方法。是我們?cè)陬?lèi)中定義的普通方法把还。
- 第一個(gè)參數(shù)必須是實(shí)例對(duì)象实蓬,該參數(shù)名一般約定為“self”,通過(guò)它來(lái)傳遞實(shí)例的屬性和方法(也可以傳類(lèi)的屬性和方法)笨篷;
- 該方法的第一個(gè)形參接收的一定是對(duì)象本身
- 調(diào)用:只能由實(shí)例對(duì)象調(diào)用。
image
類(lèi)方法
-
定義:
使用裝飾器@classmethod瓣履。
第一個(gè)參數(shù)必須是當(dāng)前類(lèi)對(duì)象率翅,該參數(shù)名一般約定為“cls”,通過(guò)它來(lái)傳遞類(lèi)的屬性和方法(不能傳實(shí)例的屬性和方法)袖迎;
應(yīng)用場(chǎng)景:當(dāng)一個(gè)方法中只涉及到靜態(tài)屬性的時(shí)候可以使用類(lèi)方法(類(lèi)方法用來(lái)修改類(lèi)屬性)冕臭。
使用 可以是 對(duì)象名.類(lèi)方法名⊙嘧叮或者是 類(lèi)名.類(lèi)方法名
調(diào)用:類(lèi)對(duì)象或?qū)嵗龑?duì)象都可以調(diào)用辜贵。
class Person:
type = '人類(lèi)'
@classmethod
def test(cls):
print(cls.type)
Person.test()
靜態(tài)方法
定義:使用裝飾器@staticmethod。方法上面添加 归形。
參數(shù):靜態(tài)方法可以有參數(shù)也可以無(wú)參數(shù)托慨。沒(méi)有“self”和“cls”參數(shù),但是方法體中不能使用類(lèi)或?qū)嵗娜魏螌傩院头椒ǎ?/p>
應(yīng)用場(chǎng)景:一般用于和類(lèi)對(duì)象以及實(shí)例對(duì)象無(wú)關(guān)的代碼暇榴。
-
調(diào)用:
類(lèi)對(duì)象或?qū)嵗龑?duì)象都可以調(diào)用厚棵。
類(lèi)名.類(lèi)方法名(或者對(duì)象名.類(lèi)方法名)。
class Game:
@staticmethod
def menu():
print('------')
print('開(kāi)始[1]')
print('暫停[2]')
print('退出[3]')
Game.menu()