python中靜態函式,物件函式和類函式

2021-09-24 11:36:19 字數 1451 閱讀 4637

classa(

object):

a ='a' @staticmethod

deffunc1

(i):

print

('hello'

, i)

deffunc2

(self, i)

:print

('hello'

, i)

@classmethod

deffunc3

(cls, i)

:print

('hello'

, i)

呼叫結果:

if __name__ ==

'__main__'

: a.func1(1)

a.func2(2)

#報錯 typeerror: func2() missing 1 required positional argument: 'i'

a().func2(2)

a.func3(

3)

區別:

靜態函式和類函式可以不需要實列化直接通過類名.方法進行呼叫,物件函式則需要先實列化class()在呼叫函式,class().func()

classa(

object):

a ='a' @staticmethod

deffunc1

(i):

print

('hello'

, i)

print

('1'

,a.a)

a.func2(1)

#typeerror: func2() missing 1 required positional argument: 'i'

a().func2(

)def

func2

(self, i)

:print

('hello'

, i)

print

('2'

,a.a)

print

('2'

,self.a)

a.func1(2)

self.func1(2)

@classmethod

deffunc3

(cls, i)

:print

('hello'

, i)

print

('3'

,a.a)

print

('3'

,cls.a)

a.func2(3)

#typeerror: func2() missing 1 required positional argument: 'i'

a().func2(3)

cls(

).func2(

3)

靜態函式與非靜態函式的區別

靜態成員函式和非靜態成員函式的根本區別在於有無this指標。非靜態函式由物件名或者物件指標 呼叫,呼叫時編譯器會向函式傳遞this指標 靜態成員函式則由類名 或者物件名呼叫 非靜態函式中有this指標,靜態函式中沒有this指標,不能訪問物件的成員函式,成員函式有this指標,const修飾this...

c靜態函式

c程式一直由下列部分組成 1 正文段 cpu執行的機器指令部分 乙個程式只有乙個副本 唯讀,防止程式由於意外事故而修改自身指令 2 初始化資料段 資料段 在程式中所有賦了初值的全域性變數,存放在這裡。3 非初始化資料段 bss段 在程式中沒有初始化的全域性變數 核心將此段初始化為0。5 堆 動態儲存...

靜態函式呼叫

include class point static void init 靜態成員函式 呼叫1 非靜態成員函式和非靜態成員屬於物件的方法和資料,也就是先產生類的物件,然後通過類的物件去引用。void main 呼叫2 靜態成員函式和靜態成員變數屬於類本身,在類載入的時候,即為它們分配了空間,所以可通...