1. 类(class)
类是具备共同特征和共同行为的事物的统称。如:人类,动物,水果等
4个人,是一个类,2个人是一个类,1个人也是一个类。类是一个起步的。
格式:
class 类的名称:
类的内容
类名称也是一个标识符,命名规则和变量命名规则一样;类的命名是大驼峰格式:TestCase
2. 对象(objec)
对象是类的某个实体或某个成员。对象也称为实体,实例
class Car:
pass
# 得到一个类,直接打印类名称
print(Car)
# 得到一个对象,打印类名称()
print(Car())
运行结果:
<class '__main__.Car'>
<__main__.Car object at 0x0000025C7FDF42E8>
0x0000025C7FDF42E8 这个是对象的内存地址
class Car:
pass
my_car = Car()
your_car = Car()
# 两个不同的对象,内存地址是不一样的
print(my_car)
print(your_car)
print(my_car == your_car)
运行结果:
<__main__.Car object at 0x000002BE5D844320>
<__main__.Car object at 0x000002BE5D8442B0>
False
虽然两个对象引用的是同一个类,但两个对象的内存地址是不一样的,所以两个对象是不相等的
3. 类属性和实例属性
类属性(类变量):是在一个类当中所有的成员都一样的特征
Car.elements
对象属性:类当中某个成员具备的特征。个体特征
Car().elements
格式:
class 类名称:
类属性
class Car:
# 定义类属性,也可以叫类变量(因为是在类里定义的变量)
wheel = True
drived = True
elements = ['塑料','铁','塑胶']
# 类里面获取类变量
print(elements)
# 类外面获取类属性
print(Car.drived)
# 修改类属性
Car.drived = False
print(Car.drived)
# 对象获取类属性
my_car = Car()
print(my_car.elements)
运行结果:
['塑料', '铁', '塑胶']
True
False
['塑料', '铁', '塑胶']
总结:不管是类外面,还是类里面都可以调用类属性
类外面也可以修改类属性
对象也可以获取类属性
修改类属性和修改对象属性是不同的
class Car:
wheel = True
drived = True
elements = ['塑料','铁','塑胶']
my_car = Car()
# 修改类属性和修改对象属性是有区别的
my_car.elements = ['锂电池']
# 对象的elements
print(my_car.elements)
# 整个类的elements属性
print(Car.elements)
运行结果:
['锂电池']
['塑料', '铁', '塑胶']
注意:修改某个类属性之后,再获取该类的属性、对象的属性,全部是修改后的属性
修改某个类的对象属性之后,变的是对象自己的属性,类的属性是不会变的
总结:
类属性和实例属性的区别:
一.类属性是属于整个类的,所有成员都一样,实例属性是属于实例的,是个体特征。
二.类属性可以被类和实例调用(类.属性,对象.属性),而实例属性只能被实例调用(对象.属性)
4.初始化函数__init__
对象产生的过程,类整个模板,制造一个对象出来的过程,实例化
具体的过程,在使用Car()时,自动调用类当中的__init__函数,初始化函数
可以自己指定产生对象的过程
初始化一个对象,可以加参数,但返回值 return 必须是 None
self 表示在对象生产过程中,代表即将出生或已经出生的对象的一个标记。是在类定义里面使用的,类的外面是不没有 self 的
class Car:
# 类属性 属性名称 = value
wheel = True
drived = True
elements = ['塑料','铁','塑胶']
def __init__(self,color,logo):
# 必须添加self,定义对象属性
# 格式:self.属性名称 = value
self.color = color
self.logo = logo
print('第一步:放底盘')
print('第二步:装车架')
print('第三步:装轮胎')
print(f'第四步:喷{color}漆')
print(f'第五步:印{logo}logo')
Car('白色','奔驰')
运行结果:
第一步:放底盘
第二步:装车架
第三步:装轮胎
第四步:喷白色漆
第五步:印奔驰logo
在类里面获取实例属性:self.属性名称
在类外面获取实例属性:对象名称.属性名称
self.属性名称 == 对象名称.属性名称
class Car:
def __init__(self,color,logo):
self.color = color
self.logo = logo
# 类里面获取实例属性 self.color
print(self.color)
print(id(self.color))
my_car = Car('白色','宝马')
# 类外面获取实例属性 my_car.color
print(my_car.color)
print(id(my_car.color))
运行结果:
白色
2601245975632
白色
2601245975632