python两种方法获取类属性

本博问源于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就是一个类属性.
python两种方法获取类属性_第1张图片

第二种情形:对象.类属性

改动上面一行代码,就成了下面的代码。把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)

python两种方法获取类属性_第2张图片

总结

在我们使用过程中,我们要避免使用第二种,因为这种代码产生混淆。比如下面这段代码,超短精简介绍

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结果不一样,产生混淆,所以还是用类.类属性较好
python两种方法获取类属性_第3张图片

你可能感兴趣的:(python尝试,面向对象编程,python)