Python類中的方法

2021-09-24 21:35:17 字數 1806 閱讀 2584

1、普通方法: 

class myclass:

"""a ****** example class"""

i = 12345

def f1(c):

return str(c) + 'hello world'

def f2():

return 'hehe'

m = myclass()

print(m.f1()) #輸出 <__main__.myclass object at 0x07698270>hello world

print(m.f2()) #報錯 f2() takes 0 positional arguments but 1 was given

print(myclass.f1()) #報錯 f1() missing 1 required positional argument: 'c'

print(myclass.f2()) #輸出hehe

類中定義的普通方法,

如果帶了乙個或多個引數,不管第乙個引數是否叫self,都會被作為例項本身的引用,所以只能用例項名加.的方式訪問;

如果沒有帶引數,只能使用類名加.的方式訪問。

2、classmethod修飾的方法

class myclass:

"""a ****** example class"""

i = 12345

@classmethod

def f1(c):

return str(c) + '\thello world'

@classmethod

def f2():

return 'hehe'

print(myclass.f1())#可以用類名加.的方式呼叫

m = myclass()

print(m.f1())#也可以用例項名加.的方式呼叫

print(myclass.f2())#報錯 typeerror: f2() takes 0 positional arguments but 1 was given

m = myclass()

print(m.f2())#報錯 typeerror: f2() takes 0 positional arguments but 1 was given

加了@classmethod的方法,至少要有乙個引數,不然沒有意義,被呼叫時會報錯;

帶乙個或多個引數時,第乙個引數會作為類本身的引用,所以能用例項名加.的方式呼叫,也能使用類名加.的方式呼叫。

3、staticmethod修飾的方法

class myclass:

"""a ****** example class"""

i = 12345

@staticmethod

def f1(c):

return str(c) + '\thello world'

@staticmethod

def f2():

return 'hehe'

print(myclass.f1(2))#可以用類名加.的方式呼叫

m = myclass()

print(m.f1('tom'))#也可以用例項名加.的方式呼叫

print(myclass.f2())#可以用類名加.的方式呼叫

m = myclass()

print(m.f2())#也可以用例項名加.的方式呼叫

#加了@staticmethod的方法,跟最普通的類外函式一樣,引數也是作為普通引數看待,不代表類也不代表例項。所以能用例項名加.的方式呼叫,也能使用類名加.的方式呼叫。

Python 中的類方法

需要用 classmethod 來標識 對於類方法 第乙個引數必須是類物件 一般以 cls 作為第乙個引數 能夠通過例項物件和類物件去訪問 類方法還可以用來修改屬性 代表的是當前類相關的資訊的物件 類本身也是乙個物件,有的地方也稱之為類的元資料物件 主要用來存放邏輯性的 主要是一些邏輯屬於類 但是和...

Python 類方法中呼叫父類的類方法

3.super 測試 推薦使用,安全 如果類的物件方法呼叫父類的物件方法,可以使用super 函式獲取父類的物件方法 如果在類方法中呼叫父類的類方法,則可以使用super 推薦,暫時未發現問題 或者cls.base 屬性 不推薦,我用的時候出現未知錯誤 獲取父類的類方法。為什麼使用屬性會出現問題?因...

python中的類 3 類方法 靜態方法

python中的類方法與靜態方法 面相物件程式設計中,類方法和靜態方法是經常用到的兩個術語。邏輯上講 類方法是只能由類名呼叫 靜態方法可以由類名或物件名進行呼叫。類方法 在python中.類方法 classmethod 是乙個函式修飾符,它表示接下來的是乙個類方法,而對於平常我們見到的則叫做例項方法...