Python : 类定义中,不加self.和加self.的区别【关于局部变量和全局变量的使用详解】

先上代码,毕竟无代码言吊

>>> class k():
    c = 6
    def __init__(self):
        self.c=1

>>> k.c
6
>>> mk = k()
>>> mk.c
1

差别就在这个地方,第一个C实例是无法调用的,是类中的局部变量,只有父类可以调用,而且,单独输入C也是无法调用的,说明不是全局变量。

再看代码

>>> c = 4
>>> class k():
    def __init__(self):
        self.c=1
        c = 6
    def p(self):
        print(c)

>>> mk = k()
>>> mk.p()
4
>>> k.c
Traceback (most recent call last):
  File "<pyshell#30>", line 1, in <module>
    k.c
AttributeError: type object 'k' has no attribute 'c'

此时,把常量定义放在初始化中,不能在外部调用,内部也无法使用,因为在__init__方法中定义便是__init__方法的局部变量。

所以,需要弄清楚常量定义的位置代表的管辖范围,方法中的局部变量无法在类中调用,内部优先调用全局变量,外部无法调用局部变量,除非变量前有申明,如最开头的代码。

在调用变量的时候一定要注意,如果目标是全局变量不需要注意,但是调用局部变量一定要添加申明,eg, k.c

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值