PYTHON中的类函数、静态函数、成员函数以及类变量、成员变量

本文深入探讨了Python中类变量、成员变量、临时变量的区别,以及成员函数、类函数、静态函数的特性与调用方式。通过具体示例,解析了不同类型的变量和函数在Python类中的作用范围。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

PYTHON中的类函数、静态函数、成员函数以及类变量、成员变量
Posted on 2019-03-16 15:10 Mr__Seven 阅读(14) 评论(0) 编辑 收藏
复制代码
1 class MethodDemo():
2 classVar = ‘This is a class variable’ #类变量,可在类函数或者成员函数中引用,为所有实例共有的
3 def init(self):
4 self.instanceVar = ‘This is a instance variable’ #成员变量,只可在实例对象中引用,只属于当前实例
5
6 #成员函数
7 def instanceMethod(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 @classmethod
16 def classMethod(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 @staticmethod
25 def staticMethod(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 0x00000000023C0B70>,1)
  classVar = This is a class variable
  instanceVar = This is a instance variable
  temporaryVar = This is a temporary variable
  executing classMethod(<class ‘main.MethodDemo’>,1)
  classVar = This is a class variable
  executing classMethod(<class ‘main.MethodDemo’>,1)
  classVar = This is a class variable
  executing staticMethod(1)
  executing staticMethod(1)
  <bound method MethodDemo.instanceMethod of <main.MethodDemo object at 0x00000000023C0B70>>
  <bound method MethodDemo.classMethod of <class ‘main.MethodDemo’>>
  <function MethodDemo.staticMethod at 0x00000000024DE048>

由此可看出,python中的变量主要包括:类变量、成员变量以及临时(局部)变量。其中类变量可以在类函数、成员函数中直接使用,可以通过类名或者实例对象直接调用。成员变量只可以在成员函数中使用,并且只能通过实例对象调用。而函数内部定义的临时变量只能在当前函数中使用。

至于类函数、静态函数、成员函数之间的区别如下:

类函数,通过装饰器@classmethod注解的函数为类函数,有一个隐含参数cls是该类本身。顾名思义,为这个类拥有的函数,可以直接通过类名直接调用,无需实例化对象,也可以通过该类的实例对象调用。

静态函数,通过装饰器@staticmethod注解的函数为静态函数,可以通过类名直接调用,也可以通过该类的实例化对象调用。其实静态方法只是在类的作用域里的函数而已,一般主要处理与这个类的逻辑关联, 如验证数据。

成员函数,有一个隐含参数self是当前实例本身。只能被该类的实例对象调用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值