1.创建对象的过程以及实例的概念
1.使用面向对象开发,第1步是设计类
2.使用类名()创建对象,创建对象的动作有两步
1.在内存中为对象分配空间
2.调用初始化方法__init__为对象初始化
3.对象创建后,内存中就有了一个对象的实实在在的存在 -----实例
因此,通常也会把:
1.创建出来的对象叫做类的实例
2.创建对象的动作叫做实例化
3.对象的属性叫做实例属性
4.对象调用的方法叫做实例方法
在程序执行时:
1.对象各自拥有自己的实例属性
2.调用对象方法,可以通过self,
访问自己的属性
调用自己的方法
结论
每一个对象都有自己独立的内存空间,保存各自不同的属性
多个对象的方法,在内存中只有一份,在调用方法时,需要把对象的引用传递到方法内部
2.类是一个特殊的对象
python中一切皆对象:
class AAA:定义的类属于类对象
obj1 = AAA() 属于实例对象
在程序运行时,类同样会被加载到内存
在python中,类是一个特殊的对象 -------类对象
在程序运行时,类对象在内存中只有一份,使用一个类可以创建出很多个对象实例
除了封装实例的属性和方法外,类对象还可以拥有自己的属性和方法
1.类属性
2.类方法
通过类名. 的方式可以访问类的属性或者调用类的方法
3.类属性和实例属性
概念:
类属性就是给类对象中定义的属性,通常用来记录与这个类相关的特征,类属性不会用于记录具体对象的特征
示例需求
定义一个工具类
每个工具都有自己的name
需求 ------知道使用这个类,创建了多少个工具对象?
class Tool(object):
# 使用赋值语句定义类属性,记录所有工具对象的数量
count = 0
def __init__(self, name):
self.name = name
# 让类属性的值+1
Tool.count += 1
# 1.创建工具对象
tool1 = Tool("斧头")
tool2 = Tool("榔头")
tool3 = Tool("水桶")
# 2.输出工具对象的总数
print(tool1.count)
运行结果
3
4.属性的获取机制
在python中属性的获取存在一个向上查找机制
注意:
如果使用 对象.类属性= 值 赋值语句,只会给对象添加一个属性,而不会影响到类属性的值
class Tool(object):
# 使用赋值语句定义类属性,记录所有工具对象的数量
count = 0
def __init__(self, name):
self.name = name
# 让类属性的值+1
Tool.count += 1
# 1.创建工具对象
tool1 = Tool("斧头")
tool2 = Tool("榔头")
tool3 = Tool("水桶")
# 2.输出工具对象的总数
tool3.count = 99
print("工具对象总数 %d " % tool3.count)
print("====> %d" % Tool.count)
运行结果
工具对象总数 99
====> 3