持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第16天,点击查看活动详情
1. 类是一个特殊的对象
Python中一切皆对象,类同样是一种对象,类对象与实例对象的定义如下所示:
class AAA:定义的类属于类对象obj1 = AAA()属于实例对象
-
在程序运行时,类同样会被加载到内存
-
在Python中,类是一个特殊的对象--类对象
-
在程序运行时,类对象在内存中只有一份,使用一个类可以创建出很多个对象实例(实例可以有很多个,模板只需要有一个)
-
除了封装实例的属性和方法外,类对象还可以拥有自己的属性和方法
- 类属性:给类对象定义的属性叫类属性
- 类方法:给类对象定义的方法叫类方法
-
通过
类名.的方式可以访问到类的属性或者调用类的方法
2. 类属性
- 类属性就是给类对象中定义的属性
- 通常用来记录与这个类相关的特征
- 类属性不会用于记录具体对象的特征
因此,要访问类属性有两种方式:
类名.类属性对象.类属性(不推荐,使用对象名虽然可以获取到类属性,但是这种方法非常容易产生混淆)
在Python中属性的获取存在一个向上查找机制,例如tool.count,首先在对象内部查找对象属性,若没有找到就会向上寻找类属性。
注意:如果使用对象.类属性=值赋值语句,只会给对象添加一个属性,而不会影响到类属性的值。
案例演示:首先定义一个工具类,其中每件工具都有自己的name,要求能够知道使用这个类创建了多少个工具对象。 当使用类名创建对象时,Python的解释器自动帮我们调用初始化方法(因此,我们能在初始化方法内部,每要创建一个对象的时候,数值+1)。
具体代码如下所示:
class Tool(object):
# 使用赋值语句定义类属性,记录所有工具对象的数量
count = 0
def __init__(self, name):
self.name = name
# 让类属性的值+1
Tool.count += 1
# 1. 创建工具对象
tool1 = Tool("斧头")
tool2 = Tool("榔头")
tool3 = Tool("水桶")
# 2. 输出工具对象的总数
# 每次初始化方法被调用的时候,我们都会在初始化方法内部,针对类属性加1
print(Tool.count)
运行结果如下图所示:程序中使用Tool创建了三个对象,输出类属性count看看结果如何?
以上就是类属性的使用,在类名下方使用赋值语句就可以,赋值语句左侧的变量名就是类属性的名称。在开发时,通常使用类属性定义类相关的特征,类属性不会用来记录跟具体对象相关的特征的。