面向对象1


1.面向对象
面向对象就是一种编程思想
面向过程也是一种编程思想 # 核心就是过程
# 过程就是'流水线',用来分步骤解决问题的
# 过程的核心思想就是将程序流程化进而简单化
面向对象 # 核心是对象二字
对象:对象就是容器,容器是用来盛放东西的(盛放什么东西)
用来盛放数据与功能的。
---所以说对象就是'数据'跟'功能'的集合体
---对象就是将程序'整合'
程序=数据+功能
学习对象就是将数据与功能整合到一起的方法
函数是放功能的容器
面向对象是一种更好的实现数据和功能整合到一起的方法
类:就是将对象做一个个区分,为了解决对象重复存取的问题
所以说类也是一种容器,该容器用来存放同类对象共有的数据与功能。
也可以将类叫做对象。
我们在访问数据的时候是先从对象里面的空间里面找,然后在从类的空间里面找

----------------类的语法:----------------
1.先定义类
class 定义类, 类中可以有任何的代码
1.变量的定义,2.功能的定义
类体代码在定义时候就运行了,就会产生名称空间。
这个时候对比一下(函数会在调用的时候才产生名称空间,而类在定义阶段就产生名称空间)
print(Student.__dict__) # 可以查看类的名称空间里面的名字
类中存放的是对象共有的东西,本质是给对象用的,类自己也可以用
print(Student.__dict__['sss']) # 可以取出类里面的值
python给我们提供了一种专门的取值方法
属性访问语法,这个sss不能称为是字符串,而是Student这个类的一个属性
类的属性无非就两种(1.访问数据属性,2.访问函数属性)
print(Student.sss) # 本质就跟上面的取值一样,但是简便了很多
类跟对象是有关联的
2.在调用类产生对象
类跟对象是有关联的,如果想让对象跟类有关联,必须用刚刚造出来的类调用一 下。 需要强调的是这个调用不会执行代码,因为类在定义的时候就执行代码过 了。只要调用Student()就会帮你产生一个对象,就会建立类和这个对象的关联 此时这个对象还是空的对象。需要你往里面添加。然后可以得到他的返回值,这个返回值就是对象。对象放的也是数据跟功能
所以对象在刚刚造出来的时候,应该为他初始化定制他独有的属性(数据初始化)
最好是不用自己产生,在调用的时候会自动把对象初始化
所以把下面的函数也放进类里面。只要调用类,就会把空对象传给__init__这个函数,调用的时候后三个参数需要自己来传
def __init__(obj,参数1,参数2,参数3.....):
obj.stu_name = 参数1
obj.stu_age = 参数2
obj.stu_gender = 参数3
在类定义阶段不会触发,在调用阶段自动触发
Stu1_obj = Student(参数1,参数2,参数3)
调用类的过程又称为实例化(你属于人类,但是不能说人类是你,你只是人类实际存在的一个案例,这就叫实例)
调用类是为了产生对象的,这个过程有人称之为实例化,将类这个抽象的东西,实例化
-----------------调用类发生了三件事------------
1.先产生一个空对象
2.会调用类中的__init__方法,然后将空对象以及调用类时括号内传入的参数一同传给__init__方法
3.返回初始化完的对象,然后可以做一个赋值操作可以看到对象里面的结果
------------总结__init__方法------------
1.会在调用类时自动触发执行,用来为对象初始化自己独有的数据
2.__init__内应该存放的是为对象初始化属性的功能,当然你也可以存放任意你想写的代码,想要在类调用时就立即执行的代码都可以放到该方法内
3.调用类的返回值并不是__init__, __init__方法必须返回None,不能返回非None的值
-------------------一个完整的类的形式----------
class Student:
# 1.变量的定义
stu_school='oldboy'
# 空对象
def __init__(obj,x,y,z):
obj.stu_name=x
obj.stu_age=y
obj.stu_gender=z

# 功能的定义
def tell_stu_info(stu_obj):
print('学生信息:名字%s 年龄%s 性别%s' % (
stu_obj['stu_name'],
stu_obj['stu_age'],
stu_obj['stu_gender']))
def set_info(stu_obj,x,y,z):
stu_obj['stu_name']=x
stu_obj['stu_age']=y
stu_obj['stu_gender']=z
stu1_obj = Student('egon',18,'male')
3.属性查找的顺序
类中存放是与对象共有的数据与功能
1.类可以访问:访问的是类的数据属性或者是类的函数属性
2.其实类中的东西是给对象用的:类的数据属性是共享给所有对象用的,大家访问的地址都一样
类的函数属性是绑定给对象用的,不同的对象
绑定方法的特殊之处,谁来调用谁当做第一个参数传入该函数内


三大思想

1.编程范式/思想:
面向过程编程:
核心是过程二字
优点:过程的终极奥义是将程序流程化,进而简单化
缺点:可扩展性差
面向对象编程:
核心是对象二字,对象就是容器,用来盛放数据与功能
对象就是将程序进行高度整合
优点:提升程序的解耦合程度,进而增强程序的可扩展性强
缺点:设计复杂
函数式编程:lambda等,python很少用

posted @ 2021-07-18 11:34  点滴180  阅读(26)  评论(0编辑  收藏  举报