假期第(22)天
面向对象程序设计
l 面向对象程序设计思想使得大型软件设计更加灵活,
很好地支持代码复用和设计复用,代码具有更好的可
读性和可扩展性
l 面向对象程序设计将数据以及对数据的操作封装组成
对象,不同对象之间通过消息机制来通信或者同步。
相同类型对象(instance)通过分类、抽象形成类(class),
面向对象程序设计的关键就是如何合理地定义这些类
并且组织多个类之间的关系
l Python中的一切内容都可以称为对象
l Python是面向对象的解释型高级动态编程语言,完全
支持面向对象的基本功能,如封装、继承、多态以及
对基类方法的覆盖或重写。用变量形式表示对象特征
的成员称为数据成员(attribute),用函数形式表示对象
行为的成员称为成员方法(method),数据成员和成员
方法统称为类的成员
类的基本概念4
类的定义
l 使用class关键字来定义类,class关键字之后是一个空
格,接下来是类的名字,如果派生自其它基类的话则
需要把所有基类放到一对圆括号中并使用逗号分隔,
然后是一个冒号,换行并定义类的内部实现
l 类名的首字母一般要大写,推荐参考惯例来命名,并
在整个系统的设计和实现中保持风格一致【
04P4.py】
class Car(object):
#Car派生自object类,object缺省也一样的
price=1000 #类变量
def __init__(self,c): #定义成员方法,self表示当前对象,可以
用其它标识符代替
self.color=c
#实例变量
def info(this):
print("Car Class:",this.color)
#实例变量
car1=Car("Red")
car1.info();
Car.price=5000
print(car1.price)
类的基本概念
输出结果:
Car Class: Red
50005
pass语句
l Python提供了关键字"pass",类似于空语句,可用在
类和函数的定义中或者选择结构中,其作用包括:
l 空语句,保证结构完整,保证语义完整【
04P5.py】
l 用其他语言实现的内置函数Python源代码上表现为pass语句
l 多态的实现
>>> class A:
pass
>>> def demo():
pass
>>> if 5>3:
pass
类的基本概念6
类的实例化
l 类的实例化对象通过"对象名.成员"的方式来访问其
中的数据成员或成员方法
>>> car = Car("Red") #实例化对象
>>> car.info() #调用对象的成员方法
Car Class:Red
l 可以使用内置函数isinstance()来测试一个对象是否为
某个类的实例
l >>> isinstance(car, Car)
l True
l >>> isinstance(car, str)
l False
l 可以使用内置函数type()查看对象类型
>>> type(car)
<class '__main__.Car'>
类的基本概念7
type类
l 在Python中,type是所有类(包括object)的类型,
type的基类是object类
l Python类的成员__class__可以查看其所属的类,与内
置函数type()的返回结果一致
l Python类的成员__bases__返回包含该类所有基类的元
组
l Python类的成员__subclasses__()返回该类的所有子类
组成的列表
l >>> type.__class__
l <class 'type'>
l >>> type.__bases__
l (<class 'object'>,)
l >>> object.__subclasses__()
l [<class 'type'>, <class 'weakref'>, <class 'weakcallableproxy'>,
<class 'weakproxy'>, <class 'int'>, <class 'bytearray'>,......
类的基本概念8
【
0
4
P
8-
1
.
p
y
】输出结果:
B
eg
in
B
E
n
d
函数修饰器
l 装饰器本质上是函数,它可以让其他函数在不需要做
任何代码变动的前提下增加额外功能【
04P8-1.py】
l 类的内置修饰器:
l @staticmethod:用于声明类的静态方法
l @classmethod:用于声明类的类方法
l @property:用于声明类属性
def A(func):
print("Begin")
func()
print("End")
class C:
@A
#为b函数增加修饰器
d
ef
b
(
):
print("B")
c1=C()
c
1.b
类的基本
概念
【
0
4
P8
-2.
p
y
】
def
A
(func):
print("Begin")
return func
class C:
color="Red"
@A
def b(self,b):
print("B",self.color,b)
c1=C()
c1.b("Blue")
【
04P
8
-2.p
y】
输出结果:
Begin
B Red Blue9
类成员的访问保护机制
l 一般来说,私有成员在类的外部不能直接访问,一般
是在类的内部进行访问和操作,或者在类的外部通过
调用对象的公有成员方法来访问,而公有成员是可以
公开使用的,既可以在类的内部进行访问,也可以在
外部程序中使用
l 在Python中,以下划线开头的变量名和方法名有特殊
的含义,尤其是在类的定义中
l _xxx:保护成员,本类或派生类可访问(实际上本模块外部
可访问);不能用"from module import *"导入其他模块的受
保护成员
l __xxx__:系统定义的特殊成员,非私有成员
l __xxx:私有成员,但在对象外部可以通过"对象名._类名
__xxx"这样的特殊方式来访问
l 注意:Python中不存在严格意义上的私有成员
l 在类中以两个或更多下划线开头但不以两个或更多下划线结
束的私有成员绑定到对象时,都会绑定为"对象名._类名__成
员名"类似的形式,除非类名中只包含下划线
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端