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