Python面向对象
一、面向对象
面向对象是当前最流行的一种软件设计模式,但是并不意味着一切都是面向对象,很多开发者还保留者面向过程或者说是面向函数编程的习惯。
面向对象的出现,可以很好的实现代码结构化的管理。
使用面向对象的编程开发,可以有效的实现代码的可重用性设计。
面向对象,更多的是要进行子模块化的设计,每一个模块都需要单独存在,并且可以被重复利用,所以,面向对象的开发更像是一个具备标准的开发模式。
面向对象程序设计开发有三个主要特征:
1、封装性
把对象的成员属性和行为看成一个密不可分的整体,将这两者封装在一个不可分割的独立单位(即对象)中
信息隐蔽,把不需要让外界知道的信息隐藏起来,有些对象的属性以及行为允许外界用户知道或使用,但不允许更改,而另一些属性或行为,则不允许外界知晓;或只允许使用对象的功能,而尽可能隐蔽对象的功能实现细节。
2、继承性
首先拥有反映事物一般特性的类,然后在其基础上派生出反应特殊事务的类。如已有的汽车的类,该类中描述汽车的普遍属性和行为,进一步再生产轿车的类,轿车的类是继承于汽车类,轿车类不但拥有汽车类的全部属性和行为,还增加轿车特有的属性和行为。
3、多态性
多态是允许程序中出现重名现象,并且依据环境的不同同样的操作可以实现不同的功能,多态的特性使程序的抽象程度和简捷程度更高,有助于程序设计人员对程序的分组协同开发。
二、面向对象的类与对象
面向对象编程中类与对象是基本的组成单元,类是对一个客观群体特征的抽象描述,而对象表示的是一个个具体的可操作的事物。类是共性的抽象,对象是个体的体现。类是对象的模板,对象是类的实例。
类中的组成一般会有两个主要组成部分:
属性:描述不同对象的主要特征
方法:所有同类物种所具备的功能
类与对象的定义
如果想要在程序中进行类的定义,则需要使用class关键字,在进行类定义的时候,类中的方法虽然处于函数对等的功能,但是两者调用的环境是不同的,因为函数必须要通过对象调用。
当类定义完成之后就可以进行对象的创建,Python中的一切的对象(变量都是对象,因为Python中的数据类型全部都属于引用数据类型),都可以在未声明类型的情况加直接使用,而对于此时的类也一样,只要进行类对象的实例化即可。
class定义类的形式几乎是各个语言通用的关键字,同时Python最大特点所有的变量不需要声明就可以直接使用。类中对象的属性也可以直接使用,不同的对象拥有不同的属性内容,每一个对象都是一个独立的个体,彼此之间没有任何交集。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | class Member: """ 定义一个实现类属性信息的设置,在该方法中需要接收两个参数的内容,而这两个参数的内容 就是要保存的属性内容 Python语言中最大的技术特点在于,属性可以直接使用(不需要进行先期定义) """ def set_info( self ,name,age): self .name = name self .age = age def get_info( self ): print ( self .name, self .age) return self .name, self .age def main(): #自定义主函数 Member1 = Member() #实例化一个Member类的对象 #当获取了类实例化的对象之后,就可以直接使用对象进行类中的方法的调用 Member1.set_info( 'zk' , 29 ) Member2 = Member() print ( "Member1:" ,Member1.name) print ( "Member1:" ,Member1.age) Member2.set_info( 'lwt' , 29 ) Member1.get_info() #获取对象属性信息,此时是通过类方法返回的 Member2.get_info() if __name__ = = '__main__' : main() |
执行结果:
函数和方法的区别
函数在定义在类的外部,而方法定义在类的内部。函数和方法都是代码可重用的一种机制。
1 2 3 4 5 6 7 8 9 10 11 12 | class classdemo: def __init__( self ): print ( "这是一个类" ) def function1(): return "这是一个方法" def main(): #自定义主函数 class1 = classdemo() print ( type (class1)) print ( type (function1)) if __name__ = = '__main__' : main() |
执行结果:
type是一个内置函数可以查看类型
所有方法定义的时候一定是定义在类中的,并且方法中都会存在一个默认的参数"self",这个参数并不需要你在调用的时候,明确的进行传递,因为其描述的当前调用它的对象,而function1属于一个自定义的函数,可以直接通过函数名称进行调用,返回的类型是一个function。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
2022-11-24 跨交换机实现VLAN间通信
2022-11-24 配置VLAN间通过VLANIF接口通信示例
2022-11-24 配置基于端口划分VLAN示例
2018-11-24 java.lang.OutOfMemoryError: GC overhead limit exceeded异常处理
2018-11-24 Spring 属性依赖注入
2018-11-24 Spring-Bean生命周期