本博问源于python面向对象,在获取类属性时,一般我们会直接用类.类属性去打印,但是python中对象.类属性也可以.
如果不熟悉类属性可以查看这个:
python面向对象什么时候使用类属性
第一种情形:类.类属性
class Tool(object):
count = 0 # count就是一个类属性
def __init__(self,name):
self.name = name
Tool.count += 1
tool1 = Tool('斧头1')
tool2 = Tool('斧头1')
tool3 = Tool('斧头1')
tool4 = Tool('斧头1')
print(Tool.count)
本段代码浅显易懂的表明类.类属性的调用过程,count就是一个类属性.
第二种情形:对象.类属性
改动上面一行代码,就成了下面的代码。把Tool改为实例化,比如tool1
class Tool(object):
count = 0 # count就是一个类属性
def __init__(self,name):
self.name = name
Tool.count += 1
tool1 = Tool('斧头1')
tool2 = Tool('斧头1')
tool3 = Tool('斧头1')
tool4 = Tool('斧头1')
print(tool1.count)
总结
在我们使用过程中,我们要避免使用第二种,因为这种代码产生混淆。比如下面这段代码,超短精简介绍
class Tool(object):
count = 0 # count就是一个类属性
def __init__(self,name):
self.name = name
Tool.count += 1
tool1 = Tool('斧头1')
tool2 = Tool('斧头1')
tool3 = Tool('斧头1')
tool4 = Tool('斧头1')
tool1.count = 99
print(tool1.count)
print(Tool.count)
代码中输出,两者print结果不一样,产生混淆,所以还是用类.类属性较好