Python语言特性-类变量和实例变量

类变量:
是可在类的所有实例间共享的值,类变量用于跟踪存在着多少个Test的实例

实例变量:
实例化之后,每个实例都会有单独的变量

例1

class Test(object):
	num_of_instance = 0
	def __init__(self, name):
		self,name = name
		Test.num_of_instance += 1

if __name__ == '__main__':
	print Test.num_of_instance    # 0
	t1 = Test('NA1')
	print Test.num_of_instance    # 1
	t2 = Test('NA2')
	print t1.name, t1.num_of_instance	# NA1  2
	print t2.name, t2.num_of_instance	# NA2  2

例2

class Person:
	name = 'a'
p1 = Person()
p2 = Person()
p1.name = 'b'

print p1.name 	# b
print p2.name	# a
print Person.name	# a

上面的 例子中p1.name = 'b’是实例调用了类比那里,就是函数传参的问题,p1.name一开始是指向的类变量 name = ‘aaa’, 但是在实例的作用域例把类变量的引用改变了,就变成了实例变量,而self.name就不能引用Person的类变量name了。

我们可以看一下例3:

class Person:
    name=[]

p1=Person()
p2=Person()
p1.name.append(1)
print p1.name  	# [1]
print p2.name  	# [1]
print Person.name 	 # [1]
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值