文章目录
一、面向对象
面向对象是基于万物皆对象这个哲学观点。在Python中,一切皆对象
面向对象只是一种思想,并不是一门编程语言,也不会绑定编程语言
面向过程和面向对象的优缺点
面向过程:
优点:性能比面向对象高,比如单片机、嵌入式开发等一般采用面向过程开发,因为性能是最重要的因素
缺点:没有面向对象易维护,易复用,易扩展,开销比较大,比较消耗资源
面向对象:
优点:易维护,易复用,易扩展【由于面向对象有封装,继承,多态的特性,可以设计出低耦合的系统,使
得系统更加灵活,更加易于维护】
缺点:性能比面向过程低
1.类和对象
1.1 概念
类:一个具有特殊功能的实体的集合【群体】,是抽象的
对象:在一个类中,一个具有特殊功能的实体,能够帮忙解决特定的问题【对象也被称为实例】,是具体的
两者之间的关系:类用于描述某一类对象的共同特征,而对象则是类的具体存在
1.2 类的定义和对象的创建
格式:
class 类名():
类体
说明:
a.Python中使用class关键字定义类
b.类名只要是一个合法的标识符即可,但是要求:遵循大驼峰命名法 ,如:KeyError,ValueError,NameError,IndexError…….
c.尽量使用单个或多个有意义的单词连接而成
d.通过缩进来体现类体的存在
e.类体一般包含两部分内容:对类的特征描述和行为描述
# 一、类的定义
# 1.基本语法
# a.函数
# 函数的声明和实现
def func():
print("ok") # 函数体
print(func) # 函数本身:<function func at 0x102587f70>
func() # 调用函数:执行函数
# b.类
# 类的声明和实现
class Func():
pass # 类体
print(Func) # 自定义类:<class '__main__.Func'>
Func() # 创建对象
"""
注意:
a.同一个py文件中可以定义多个类,但是,在实际项目开发中,如果需求较为复杂,类的定义建议一个py文件定义一个类
b.当一个函数定义完毕,则需要手动调用,否则无法执行
当一个类定义完毕,当类被加载的时候,其中的类体也会被加载
"""
# 二、创建对象/类的实例化
# 语法:对象名 = 类名(....),目前为空
mc1 = MyClass1()
print(mc1) # <__main__.MyClass1 object at 0x10726bdc0>
print(type(mc1)) # <class '__main__.MyClass1'>
"""
注意:
a.创建对象的过程,本质上就是定义变量的过程,该变量中存储的是创建出来的对象的地址
b.打印对象的时候,默认的情况下,打印的是该对象在内存空间中的地址,
但是,像int,str,list。。。常用的数据类型,系统已经处理过了,所以直接打印结果
c.一个普通的类,可以创建无数个对象,每个对象在内存空间中拥有独立的地址
d.对象名 = 类名(....)表示创建对象,但是该代码执行一次,则表示创建一个新的对象
"""
2.类中的成员/类体
2.1 成员函数的定义和访问
# 一、类中成员函数的定义
# 1.类的定义
class Person():
# 2.多个对象共同的特征:变量
# 3.多个对象共同的行为:函数
"""
说明:
a.self:自身,自己,在面向对象的函数中,self表示当前对象
b.哪个对象调用函数,则该函数中的self表示就是哪个对象
c.当调用函数的时候,self不需要手动传参,系统会自动完成传参,传递的是当前对象,只需要关注自定义的参数即可
d.在Python中,self并不是一个关键字,只要是个合法的标识符即可,但是,为了表示当前对象,一般使用self
"""
# 实例函数/对象函数,特点:第一个形参必须是self,只能由对象调用
def run(self):
print("running",id(self))
def eat(self,sth):
print(