python 类函数 成员函数_python中的类函数、静态函数、成员函数以及类变量、成员变量...
1 classMethodDemo():2 classVar = 'This is a class variable' #類變量,可在類函數或者成員函數中引用,為所有實例共有的
3 def __init__(self):4 self.instanceVar = 'This is a instance variable' #成員變量,只可在實例對象中引用,只屬于當前實例
5
6 #成員函數
7 definstanceMethod(self,x):8 temporaryVar = 'This is a temporary variable' #臨時變量,只在當前函數有用,也就是該函數的局部變量
9 print('executing instanceMethod(%s,%s)'%(self,x))10 print('classVar = %s'%self.classVar) #類變量可在成員函數中引用
11 print('instanceVar = %s'%self.instanceVar) #成員變量可在成員函數中引用
12 print('temporaryVar = %s'%temporaryVar) #臨時變量只能在當前函數中引用
13
14 #類函數
15 @classmethod16 defclassMethod(cls,x):17 print('executing classMethod(%s,%s)'%(cls,x))18 print('classVar = %s' % cls.classVar) #類方法中能引用類變量
19 #print('instanceVar = %s' % cls.instanceVar) #'類函數不可引用成員變量 MethodDemo' has no attribute 'instanceVar'
20 #print('temporaryVar = %s' % temporaryVar) #類函數不可引用成員函數中的臨時變量 name 'temporaryVar' is not defined
21 #print('tempVar =%s' % cls.tempVar) #類函數不可引用成員函數中的局部變量 'MethodDemo' has no attribute 'tempVar'
22
23 #靜態函數
24 @staticmethod25 defstaticMethod(x):26 print('executing staticMethod(%s)' %( x))27 #print('classVar = %s' % classVar) #靜態函數不可引用類變量
28 #print('instanceVar = %s' % instanceVar) #靜態函數不可引用成員變量
29
30 a =MethodDemo()31 a.instanceMethod(1) #實例對象可引用成員函數
32 a.classMethod(1) #實例對象可引用類函數
33 MethodDemo.classMethod(1) #類函數可直接通過類調用
34 a.staticMethod(1) #靜態函數可通過實例對象調用
35 MethodDemo.staticMethod(1) #靜態函數可直接通過類調用
36
37 print(a.instanceMethod)38 print(a.classMethod)39 print (a.staticMethod)
運行結果:
executing instanceMethod(<__main__.methoddemo object at>,1)
classVar = This is a class variable
instanceVar = This is a instance variable
temporaryVar = This is a temporary variable
executing classMethod(,1)
classVar = This is a class variable
executing classMethod(,1)
classVar = This is a class variable
executing staticMethod(1)
executing staticMethod(1)
>
>
由此可看出,python中的變量主要包括:類變量、成員變量以及臨時(局部)變量。其中類變量可以在類函數、成員函數中直接使用,可以通過類名或者實例對象直接調用。成員變量只可以在成員函數中使用,并且只能通過實例對象調用。而函數內部定義的臨時變量只能在當前函數中使用。
至于類函數、靜態函數、成員函數之間的區別如下:
類函數,通過裝飾器@classmethod注解的函數為類函數,有一個隱含參數cls是該類本身。顧名思義,為這個類擁有的函數,可以直接通過類名直接調用,無需實例化對象,也可以通過該類的實例對象調用。
靜態函數,通過裝飾器@staticmethod注解的函數為靜態函數,可以通過類名直接調用,也可以通過該類的實例化對象調用。其實靜態方法只是在類的作用域里的函數而已,一般主要處理與這個類的邏輯關聯, 如驗證數據。
成員函數,有一個隱含參數self是當前實例本身。只能被該類的實例對象調用。
總結
以上是生活随笔為你收集整理的python 类函数 成员函数_python中的类函数、静态函数、成员函数以及类变量、成员变量...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vue .native 方法未定义_vu
- 下一篇: python aes_python AE