类 作用域 共享变量 实例变量

类 作用域:

  • 就像函数一样,class语句是作用域,由内嵌的赋值语句建立的变量名,就存在于这个本地作用域内
  • 就像模块内的变量,在class语句内赋值的变量名会变成类对象的属性
  • 类变量属于整个class所共享,而实例变量则仅仅属于特定对象实例。

类变量和实例变量在操作上的区别

  •  访问:变量通过类名点操作访问也可以通过实例点操作访问className.var实例变量只可以通过实例名点操作访问objectName.var
  • 类变量修改:通过className.var修改类变量,该类和所有实例所共享的数据将被修改,再次通过类或实例访问得到的将是新的数,通过objectName.var修改类变量,其效果将仅仅作用在该实例上,再次通过类或其它实例访问得到的仍然是旧的数据。但这一修改方式将对该类变量实例化,其结果是该实例将得到一个单独的该变量拷贝


被所有实例共享的变量;

>>> class Sapm:
spam='spam'

>>> x=Sapm()
>>> y=Sapm()
>>> x.spam
'spam'
>>> y.spam
'spam'
>>> Sapm.data='123'
>>> x.data,y.data
('123', '123')

///对实例的属性进行赋值运算会在该实例内创建或修改变量名,而不是在共享的类中

>>> class MixedNames:
data='spam'
def __init__(self,data):
self.data=data
def display(self):
print self.data,MixedNames.data

>>> x=MixedNames(1)
>>> y=MixedNames(2)
>>> x.display()
1 spam
>>> y.display()
2 spam




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值