- 面向对象引入
- 代码优化
- 引入总结
- 编程思想
- 对象与类的概念
- 对象与类的创建
- 对象独有的数据
# 用所学知识实现人狗大战
person1 = {
'name': 'jason',
'atk': 100,
'lif': 100000
}
dog1 = {
'name': '沙漠死神',
'atk': 400,
'lif': 3500
}
# 人攻击狗
dog1['lif'] -= person1['atk']
# 狗攻击人
person1['lif'] -= dog1['atk']
# 如果要创建多个人或狗 代码冗余量太大 所以要封装为函数 并且攻击也可以封装成函数
def get_person(name, atk, lif):
person = {
'name': name,
'atk': atk,
'lif': lif
}
return person
def get_dog(name, atk, lif):
dog = {
'name': name,
'atk': atk,
'lif': lif
}
return dog
def person_atk(person, dog):
dog['lif'] -= person['atk']
def dog_atk(dog, person):
person['lif'] -= dog['atk']
代码优化
在这里插入代码片引入总结
将人的数据跟人的功能绑定到一起
只有人可以调用人的功能
将狗的数据跟狗的功能绑定到一起
只有狗可以调用狗的功能
将数据与功能绑定到一起的操作起名为:'面向对象编程'
本质:将特定的数据与特定的功能绑定到一起 将来只能彼此相互使用
编程思想
面向过程思想
迄今为止 我们所编写的代码都是面向过程思想
过程:指的是流程 根据功能 一步一步的编写下来
面向对象思想
核心为 对象 二字
对象是一个 功能与数据 的结合体
一般创建了一个对象 就可以将其放在一边不管
"""
面向过程编程相当于让你给出一个问题的具体解决方案
面向对象编程相当于让你创造出一些事物之后不用你管
"""
上述两种编程思想没有优劣之分 仅仅是使用场景不同
甚至很多时候是两者混合使用
对象与类的概念
对象是 功能与数据 的结合体 而类是 多个拥有相同数据和功能的对象 的结合体 类用于产生对象 但对象才是真正的核心对象与类的创建
先有类 再有对象
# 关键字 class
class Student:
# 学生类的公共数据
# 学生类的公共方法
"""
1.class是定义类的关键字
2.People是类的名字
类名的命名跟变量名一致 并且推荐首字母大写(为了更好的区分)
3.类体代码
公共的数据公共的方法
ps:类体代码在类定义阶段就会执行!!!
"""
对象独有的数据
class Student:
school = '清华大学'
stu1 = Student()
# 添加独有的数据
stu1.name = 'jason'
stu1.age = 18
stu1.gender = 'male'
print(stu1.__dict__) # {'name': 'jason', 'age': 18, 'gender': 'male'}
# 要给多个学生对象添加数据 代码冗余 封装函数
def init(stu_obj, name, age, gender):
stu_obj.name = name
stu_obj.age = age
stu_obj.gender = gender
stu2 = Student()
init(stu2, 'kevin', 28, 'female')
print(stu2.__dict__) # {'name': 'kevin', 'age': 28, 'gender': 'female'}
# 当有其他类的时候 想init只给学生类用 封装到类中
class Student:
school = '清华大学'
def init(stu_obj, name, age, gender): # 这里的stu_obj变色了 发现无论怎么修改 都和其他不一样
stu_obj.name = name
stu_obj.age = age
stu_obj.gender = gender
# 在类中的函数 默认传输的第一个参数为对象本身 会自动传输
stu1 = Student()
print(stu1.__dict__) # {}
stu1.init('jason', 18, 'male')
print(stu1.__dict__) # {'name': 'jason', 'age': 18, 'gender': 'male'}
# 类提供了一种方法 __init__ 在创建类的时候自动初始化数据
class Student:
school = '清华大学'
def __init__(self, name, age, gender):
self.name = name
self.age = age
self.gender = gender
stu1 = Student('jason', 18, 'male') # 创建对象时就要传参
print(stu1.__dict__) # {'name': 'jason', 'age': 18, 'gender': 'male'}



