关于方法中的self参数和全局变

本文通过示例程序解析Python类中方法定义、全局变量声明及其作用,包括对象自身参数的理解、方法调用过程中的全局变量访问机制。

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

先摆样例程序,自己想想执行结果是怎样的;如果注释掉global va后,执行的结果又会如何?同时注释掉global va和va = [value]+va两行呢?

#a.py
va = ['va1','va2','va3']
print('first:',id(va))

class TestGlobal():
    def __init__(self):
        pass
    
    def Tprint(self, value):
        global va
        va.append('test')
        va.insert(1,'va_ins')
        va = [value]+va
        return va
        
print('second:',va)

obj = TestGlobal()
print obj.Tprint('111')

两个注意点:


1、python中,类中方法定义的第一个参数始终是self,表示引用方法的对象自身(如a.py中的obj对象),定义方法的语句形如a.py中的Tprint(self, value);在java中也有类似的表示对象自身的参数,但定义时不会明确写出来,所以叫做隐含参数,定义方法的语句形如public void Tprint(value)。

2、注意Tprint中的global修饰符,通过将变量va声明为全局变量,使得Tprint()能够访问其上层的命名空间的变量。反之,如果这里va不声明为全局变量,则va = [value]+va就会出现错误“变量va赋值之前被引用”,程序不清楚这里的va是函数内部新生成的变量还是全局变量va。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值