python类定义成员变量无值_python中的类变量和成员变量

9febfefdbdeaed8121d39288351e4383.png

一、类变量和成员变量的访问/修改

类变量:类和类的实例都可以访问类变量,但只有类可以修改类变量;如果使用类的实例来修改类变量,那么python会自动给生成一个与类变量同名的成员变量,之后所有通过类的实例来访问和修改类变量,实际上访问和修改的是同名的成员变量。如code_1。

#code_1
class code_1(object):
    classVar = 11
    def __init__(self):
        pass

if __name__ == '__main__':
    one = code_1()
    print('通过类实例访问类变量classVar:',one.classVar,'通过类访问类变量classVar:',code_1.classVar)
    one.classVar = 22 #创建了一个与类变量classVar同名的成员变量
    print('成员变量classVar:',one.classVar,'类变量classVar:',code_1.classVar)
    one.classVar += 1 #成员变量classVar自加1=23,类变量classVar不变=11
    print('成员变量classVar(值自加1):',one.classVar,'类变量classVar(值不变):',code_1.classVar)
    code_1.classVar += 10 #成员变量classVar不变=23,类变量classVar自加10=21
    print('成员变量classVar(值不变):',one.classVar,'类变量classVar(值自加10):',code_1.classVar)

code_1打印结果如下:

通过类实例访问类变量classVar: 11 通过类访问类变量classVar: 11

成员变量classVar: 22 类变量classVar: 11

成员变量classVar(值自加1): 23 类变量classVar(值不变): 11

成员变量classVar(值不变): 23 类变量classVar(值自加10): 21

成员变量:只有类的实例可以访问和修改成员变量,类不可以修改和访问成员变量

二、哪些是成员变量,哪些是类变量,它们的作用域

成员变量:一般成员变量都是http://self.xxx,但并不是有的http://self.xxx都是成员变量。只有类__init__内包含的http://self.xxx变量,还有__init__所调用函数中的http://self.xxx变量,以上两类才是真正意义上的成员变量。除此之外的类内其它http://self.xxx变量只能看作是类内的全局变量。

类变量:写在类开头的变量即为类变量,如类code_1中的classVar。

成员变量作用域:每个类实例都有一套单独的成员变量,相互不共享。

类变量作用域:所有的实例共享同一个类变量(若要修改一定要使用 class.classVar的形式)

最近用thinter写界面类踩了一波坑,特记录。

给给位批评指正( *^-^)ρ(*╯^╰)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值