pyhon day19 博客整理
面向过程和面向对象
什么是面向对象
面向对象指的是一门编程思想
面向过程编程
面向过程核心是'过程'二字,过程指的是做事情的步骤,即先做什么再去做什么
该编程思想写程序,类似于工厂车间的流水线
优点:
逻辑清晰,将复杂的问题流程化,进而简单化
缺点:
可扩展性差
面向对象编程
面向对象编程核心是'对象'二字,对象指的是特征与技能的结合体
基于该编程思想编写程序,就类似于创造,去创建各个类和对象
优点:
可扩展性高
缺点:
编写程序的复杂度要远远高于面向过程编程思想
类
对象是特征和技能的结合体,类是一系列对象相同的特征与技能的集合体
如何定义类:
首先定义类,后调用类去创造对象
定义类的语法:
def 函数名():
class 类名():
对象相同的特征'
对象相同的技能
class : 用来定义类,class 后面跟的是类名
类名: 类的名字,用来调用创造的对象
attention : 类名必须要遵循驼峰命名法
定义类发生的事情
-
类在定义时,会产生一个空的名称空间
-
会把类内部所有名字,扔进类的名称空间中
attention : 类在定义阶段就已经产生好了名称空间,执行python文件时会执行类内部的代码
#学生类
class OldboyStudent:
#特征
school = 'oldboy'
#技能
def learn(self)
print('learn python...')
def choose_course(self):
print('choose_course...')
#OldboyStudent ---> 会指向类的名称空间
print(OldboyStudent.__dic__) #查看类的名称空间内所有名字
print(OldboyStudent.__dic__.get('school')) #oldboy
#改
OldboyStudent.school = 'oldgirl'
#增
OldboyStudent.address = 'shanghai'
#删
del OldboyStudent.address
对象
创建对象
语法
类名 + ()调用类产生对象 ---> 类的实例化
名称空间的产生:
1. 类的名称空间在类定义阶段就已经产生
2. 对象的名称空间,在调用类时产生
class OldboyStudent:
#特征
school = 'oldboy'
#技能
def learn(self):
print('learn pyhton...')
def choose_course(self):
print('choose_course...')
stu1 = OldboyStudent() #学生对象
print(stu1.school)
stu1.learn()
stu1.choose_course()
实例化
类名加括号就是实例化,会自动触发__int__
函数的运行,可以用它来给每个实例定制自己的特征
self : 在实例化时自动将对象/实例本身传给__init__
的第一个参数
#学生类
class OldboyStudent:
#若__init__中有self以外的参数,调用类时必须在括号内传入参数
def __init__(self,name,age,sex):
self.name = name
self.age = age
self.sex = sex
#特征
school = 'oldboy'
#技能
def learn(self):
print('learn python...')
def choose_course(self):
print('choose_course...')
stu1 = OldboyStudent('jack',18,'male')
'''
****调用类发生的事情
1. 首先会产生一个空的对象,就是产生'对象的名称空间'
2. 会自动触发__init__
2.会把对象本身以及括号内的参数一并传给__init__函数
****总结:调用类会产生一个对象,调用类的过程叫做类的实例化,产生对象称之为类的一个实例
'''
#查看类的名称空间
print(OldboyStudent.__dict__)
#查看对象的名称空间
print(stu1.__dict__)
对象与类的查找顺序
- 对象.属性,若对象本身有,则优先查找对象自己的
- 若对象本身没有,则去类里找,若类没有,则报错
对象绑定方法
类内部的函数主要是给对象用的:
1.由类来调用类内部的函数,该函数只是一个普通的函数
普通函数需要接收几个参数就得传入几个参数
-
由对象来调用称之为对象的绑定方法
不同的对象调用该绑定方法,则会将不同的对象传入该绑定方法中
-------对象的绑定方法,是由对象来调用的
特殊之处就是把对象当做第一个参数传入该方法中
stu1 = OldboyStudent('rose',19,'female')
stu1.choose_course('python')