# 先定义模子,来描述一类事物
# 具有相同的属性和技能叫做类
# 定义类
class Person: # 类名
def __init__(self,name,sex,job,hp,weapon,ad):
# 必须叫这个名字,不能改变的,所有的在一个具体任务出现之后拥有的属性
# 都可以写在这里
self.name = name
self.sex = sex
self.job = job
self.hp = hp
self.weapon = weapon
self.ad = ad
# 定义类的方法
def attack(Dog):
Dog.hp -= self.ad
print(f"{self.name}攻击了{Dog.name}{Dog.name}血量剩余{Dog.hp}")
# 实例化:
# 通过类获得一个实例的过程叫实例化
alex = Person('alex','male','法师','100','法杖','100')
# alex 就是一个对象 alex = Person()的过程是通过类获取一个对象的过程
# 类名()会自动调用类中的__init__()方法
# 实例化所经历的步骤:
# 1.类名() 之后的第一件事儿:开辟一块内存空间
# 2.调用__init__把内存地址作为self参数传入到函数内部
# 3.所有的这一个对象的需要使用的属性都需要和self相关联起来
# 4.执行完init逻辑之后
# 实例化过程图
![](https://www.icode9.com/i/l/?n=20&i=blog/2205193/202107/2205193-20210701101452746-329923852.png)
![](https://www.icode9.com/i/l/?n=20&i=blog/2205193/202107/2205193-20210701101520068-1089509394.png)
# 类和对象之间的关系:
# 类 是一个大范围 是一个模子 它约束了事物有哪些属性 但是不能约束具体的值
# 对象 是一个具体的内容 是模子的产物 它遵循了类的约束 同时给属性赋上具体的值
# Person是一个类:alex是类的对象
# 类有一个空间,存储的是定义在class 中的所有名字
# 每一个对象又有自己的空间,通过对象.__dict__就可以查看这个对象的属性
# 修改列表\字典 中的某个值,或者是对象的某一个属性都不会影响这个对象\字典\列表所在的内存空间,地址都不会变
# 字典存储和修改的过程图
# 类的属性的增 删 改 查
alex.money = 1000000
del alex.money
alex.ad = 101
print(alex.hp)
# 类调用实例化整个过程图
字典修改存储过程图
实例化过程图
定义类和实例化完整图