面向对象
面向对象
目录
- 面向对象的总括
- 面向对象的编程思想
- 对象与类的概念
- 对象与类的创建
面向对象的总括
数据与其调用的功能绑定到一起的操作被称之为"面向对象编程"
面向对象编程的本质是:
将特定的数据与特定的功能绑定到一起,将来只能彼此相互使用
面向对象的编程思想
-
面向过程编程
面向过程编程中的过程就是流程,而其面向过程编程就是在执行一系列的流程
就是按照指定的步骤依次执行,最终可以得到想要的结果
-
面向对象编程
面向对象编程的核心就是'对象'二字
其中 对象 就是一个容器,里面将数据和功能绑定在一起
-
面向过程编程和面向对象编程的区别
类别 区别 面向过程编程 给出一个问题的具体的解决方案 面向对象编程 让创造出一些事物之后不用进行额外的操作 两者的编程思想没有优劣之分,仅仅是使用的场景不同
很多时候是两者混合使用
对象与类的概念
在面向对象编程中 类仅仅是用于节省代码 对象才是核心
-
对象
对象就是数据与功能的结合体
对象用于记录多个对象不同的数据和功能
-
类
类就是多个对象相同的数据和功能的结合体
类主要用于记录多个对象相同的数据和功能
对象与类的创建
-
对象与类的场景下的情况
场景 先后顺序 现实生活中 应该先有一个个的个体(对象)再有一个个的群体(类) 编程世界中 必须是现有类才能产生对象 -
面向对象的创建类的语法
class People: # 学生对象公共的数据 # 学生对象公共的方法 1.class是定义类的关键字 2.People是类的名字 类名的命名跟变量名一致 并且推荐首字母大写(为了更好的区分) 3.类体代码 公共的数据\公共的方法 ps:类体代码在类定义阶段就会执行!!!
-
面向对象中的查看名称空间的方法
- 类名.__ dict__ 使用该方法查看名称空间 可以看成是一个字典
当需要获取具体值的时候,可以通过:
类名.__ dict__ ['func_name'] 使用字典的取值方式获取 func_name 所对应的v值
类名.__ dict__ . get('func_name') 使用字典的取值方式获取 func_name 所对应的v值
class Student: # 学生对象公共的数据 school = '清华大学' # 学生对象公共的方法 def choice_course(self): print('正在选课') print(Student.__dict__) # 获取字典 print(Student.__dict__['school']) # 清华大学 print(Student.__dict__.get('school')) # 清华大学
-
在面向对象编程中 想要获取名称空间中的名字 可以采用句点符
类名.func_name 使用该方法可直接取出字典中func_name所对应的v值
class Student: # 学生对象公共的数据 school = '清华大学' # 学生对象公共的方法 def choice_course(self): print('正在选课') print(Student.school) print(Student.choice_course) '''类实例化产生对象>>>: 类名加括号''' stu1 = Student() # 产生对象 print(stu1.school) Student.school = '北京大学' # 修改school键对应的值 print(stu1.school)
我们习惯将类或者对象句点符后面的东西称为属性名或者方法名
- 类名.__ dict__ 使用该方法查看名称空间 可以看成是一个字典
对象的独有数据的流程分析
-
直接利用 __ dict__ 的方法添加键值对
obj1 = Student() obj1.__dict__['name'] = 'jason' # 等价于 obj1.name = 'jason' obj1.__dict__['age'] = 18 # 等价于 obj1.age = 18 obj1.__dict__['gender'] = 'male' # 等价于 obj1.gender = 'male' obj2 = Student() obj2.__dict__['name'] = 'kevin' obj2.__dict__['age'] = 28 obj2.__dict__['gender'] = 'female'
-
将添加独有数据的代码封装成函数
def init(obj,name,age,gender):
obj.__dict__['name'] = name
obj.__dict__['age'] = age
obj.__dict__['gender'] = gender
stu1 = Student()
stu2 = Student()
init(stu1,'jason',18,'male')
init(stu2, 'kevin',28,'female')
-
init函数是专用给学生对象创建独有的数据 其他对象不能调用>>>:面向对象思想 将数据和功能整合到一起
将函数封装到学生类中 这样只有学生类产生的对象才有资格访问class Student: """ 1.先产生一个空对象 2.自动调用类里面的__init__方法 将产生的空对象当成第一个参数传入 3.将产生的对象返回出去 """ def __init__(self, name, age, gender): self.name = name # self.__dict__['name'] = name self.age = age # self.__dict__['age'] = age self.gender = gender # self.__dict__['gender'] = gender # 左右两边的名字虽然一样 但是意思不一样 左边的其实是字典的键 右边的其实是实参 # 学生对象公共的数据 school = '清华大学' # 学生对象公共的方法 def choice_course(self): print('正在选课') stu1 = Student('jason', 180, 'male') stu2 = Student('快男', 28, 'female')