面向对象
目录
面向对象编程
面向对象 : 一门编程思想(上帝是的思维方式)
面向对象 : 对象 --特征 与技能 的结合体
优点: 可扩展性强
缺点: 编程的复杂要高于面向过程
面向过程: 机械式的思维方式
优点: 复杂的问题流程化,进而简单化
缺点: 可扩展性差
类: 一系列对象相似的特征与技能的集合体
python 程序中: 先定义类,调用类来产生对象
#注意:类中定义变量使用驼峰体
class OldboyStudent(object):
school = 'oldboy' *--特征
def choose_course(self): *--技能
print('is choosing course')
定义函数阶段,只检测语法,不执行代码。
定义类阶段,类体代码会在定义阶段就立刻执行,并产生一个类的名称空间。即类的本身其实就是一个容器/名称空间,用来存放名字
print(oldboyStudent.__dict__)
#打印类体内的所有名称空间,并以字典的形式展示
print(oldStudent.__dict__['school'])
对象: 调用类即可产生对象,调用类的过程,称为类的实列化,实力化的结果称为类的对象/实列
stu1 = oldStudent()
print(stu1.school)
定制对象独有特征:
对象本质似于类,也是一个名称空间,但是对象的名称空间存放对象独有的名字,而类中存放的是对象共有的名字。
属性查找:
从对象本身查找,没有则往类中找,类中没有则会报错。
class oldboyStudent():
school = 'oldboy'
def __init__(self,name,age,gender):
'''调用类生成对象自动触发'''
self.name = name
self.age = age
self.gender = gener
print('*' * 50)
def choose_course(self):
print('is choosing course')
try:
stu1 = oldboyStudent()
except Exception as e:
print(e)
调用类发生的事件:
1.创造一个空的对象
2.自动触发类中__init__
功能的执行,将对象及类括号内的参数一同传入。
对象的绑定方法:
1.类名称空间中定义的数据属性和函数属性都是共享个所有对象用的。
2.对象名称控件中定义的只有数据属性,而且是对象所独有的数据类型
类中定义的函数是类的函数属性,类可以使用,但使用的就是一个普通的函数而已,意味着需要完全遵循函数的参数规则,该传几个值就传几个
-
类中定义的函数是共享给所有对象的,对象也可以使用,而且是绑定给对象用的,
-
绑定的效果:绑定给谁,就应该由谁来调用,谁来调用就会将谁当作第一个参数自动传入
补充:类中定义的函数,类确实可以使用,但其实类定义的函数大多情况下都是绑定给对象用的,所以在类中定义的函数都应该自带一个参数self
class OldboyStent:
school = 'oldboy'
def __init__(self,name,age,gender):
self.name = name
self.age = sge
self.gender = gender
def choose_course(self):
print(f'{self.name} choosing course)
def func(self):
peint('from func')
python3
中统一了类和类型的概念,类就是类型。
#list.append() 方法原理
class oldboyStender:
school = ' oldboy'
def __init__(self,name,age,gender):
self.name = name
self.age = age
self.sex = gender
def choose_course(self,name):
print(f'{name}choosing course')
stu1 = oldboyStender('nick',18,'male')
-
对象其实就是一个高度整合的产物,整合数据与专门操作该数据的方法(绑定方法)