python学习之面向对象【入门初级篇】
发布时间 - 2026-01-10 22:42:29 点击率:次前言

最近在学习Python的面向对象编程,以前是没有接触过其它的面向对象编程的语言,因此学习这一部分是相当带劲的,这里也总结一下。
概述
- python支持多种编程范式:面向过程、面向对象、面向切面(装饰器部分)等。
- 面向过程:根据业务逻辑从上到下写垒代码
- 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可
- 面向对象:对函数进行分类和封装,让开发“更快更好更强...”
OOP思想
- 面向对象的基本哲学:世界由具有各自运动规律和内部状态的对象组成,对象之间相互作用和通讯构成了世界。
- 唯一性,世界没有两片相同的树叶,同样的没有相同的对象。
- 分类性,分类是对现实世界的抽象。
- 三大特性:封装、继承和多态
面向对象的三大特性:
一、封装
封装,对具体对象的一种抽象,即将某些部分隐藏起来,在程序外部看不到,即无法调用。
私有化:将类或函数中的某些属性限制在某个区域之内,外部无法调用。
Python中私有化的方法也比较简单,就是在准备私有化的属性(包括方法、数据)名字前面加双下划线。
例如:
class ProtectMe(object):
def __init__(self):
self.me = "qiwsir"
self.__name = "kivi"
def __python(self):
print("I love Python.")
def code(self):
print9"Which language do you like?")
self.__python()
if __name__ == "__main__":
p = ProtectMe()
print(p.me)
print(p.__name)
#运行结果
qiwsir
Traceback (most recent call last):
File "21102.py", line 21, in <module>
print p.__name
AttributeError: 'ProtectMe' object has no attribute '__name'
说明:__name属性隐藏了,无法调用。
调用私有属性,可以使用property函数
class ProtectMe(object): def __init__(self): self.me = "qiwsir" self.__name = "kivi" @property def name(self): return self.__name if __name__ == "__main__": p = ProtectMe() print(p.name) #运行结果 kivi
所以,在使用面向对象的封装特性时,需要:
- 将内容封装到某处
- 从某处调用被封装的内容
第一步:将内容封装到某处
self 是一个形式参数,当执行 obj1 = Foo('wupeiqi', 18 ) 时,self 等于 obj1
当执行 obj2 = Foo('alex', 78 ) 时,self 等于 obj2
所以,内容其实被封装到了对象 obj1 和 obj2 中,每个对象中都有 name 和 age 属性,在内存里类似于下图来保存。
第二步:从某处调用被封装的内容
调用被封装的内容时,有两种情况:
- 通过对象直接调用
- 通过self间接调用
class Role(object):
ac = None #类变量
def __init__(self,name,role,weapon,life_value):
#初始化方法
self.name = name #实例变量(成员变量)
self.role = role
self.weapon = weapon
self.life_val = life_value
def buy_weapon(self,weapon): #定义方法
#self:表示实例本身
self.weapon = weapon
# print("%s is buying [%s]" %(self.name,weapon))
#把一个抽象的类变成一个具体的对象的过程,叫实例化
p1 = Role("sanjiang",'Police',"B10",90) #实例
t1 = Role("Chunyun",'Terrorist',"B11",100)
二、继承
继承,面向对象中的继承和现实生活中的继承相同,即:子可以继承父的内容。
class SchoolMember(object):
# member_nums = 0
def __init__(self,name,age,sex):
self.name = name
self.age = age
self.sex = sex
# self.enroll()
def enroll(self):
SchoolMember.member_nums += 1
print("SchoolMember [%s] is enrolled!" %self.name)
def tell(self):
print("Hello my name is [%s]" %self.name)
class Teacher(SchoolMember):
def __init__(self,name,age,sex,course,salary): #重写父类的__init__方法
super(Teacher,self).__init__(name,age,sex) #继承(新式类)
# SchoolMember.__init__(self,name,age,sex) #继承(旧式类)
self.course = course
self.salary = salary
def teaching(self):
print("Teacher [%s] is teaching [%s]" %(self.name,self.course))
class Student(SchoolMember):
def __init__(self,name,age,sex,course,tuition):
super(Student,self).__init__(name,age,sex)
self.course = course
self.tuition = tuition
def pay_tuition(self):
print("ca,student [%s] paying tuition [%s] again" %(self.name,self.tuition))
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。
# python
# 面向对象
# python面向对象编程
# python面向对象实例
# Python面向对象程序设计OOP深入分析【构造函数
# 组合类
# 工具类等】
# Python面向对象程序设计OOP入门教程【类
# 实例
# 继承
# 重载等】
# Python面向对象编程基础解析(一)
# 简述Python中的面向对象编程的概念
# 浅谈Python面向对象编程oop思想心得
# 三大
# 是一个
# 这一
# 下划线
# 相互作用
# 重写
# 更快
# 可以使用
# 这篇文章
# 有两种
# 更强
# 类似于
# 中都
# 第二步
# 两片
# 接触过
# 进行分类
# 日后
# 从上到下
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel Vite是做什么的_Laravel前端资源打包工具Vite配置与使用
如何快速建站并高效导出源代码?
香港服务器建站指南:免备案优势与SEO优化技巧全解析
Laravel如何配置中间件Middleware_Laravel自定义中间件拦截请求与权限校验【步骤】
javascript中的数组方法有哪些_如何利用数组方法简化数据处理
小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?
bing浏览器学术搜索入口_bing学术文献检索地址
uc浏览器二维码扫描入口_uc浏览器扫码功能使用地址
高防服务器租用首荐平台,企业级优惠套餐快速部署
Windows11怎样设置电源计划_Windows11电源计划调整攻略【指南】
深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?
三星网站视频制作教程下载,三星w23网页如何全屏?
Laravel如何使用Gate和Policy进行权限控制_Laravel权限判定与策略规则配置
如何在IIS7上新建站点并设置安全权限?
Laravel如何清理系统缓存命令_Laravel清除路由配置及视图缓存的方法【总结】
Android实现代码画虚线边框背景效果
七夕网站制作视频,七夕大促活动怎么报名?
Laravel怎么上传文件_Laravel图片上传及存储配置
canvas 画布在主流浏览器中的尺寸限制详细介绍
油猴 教程,油猴搜脚本为什么会网页无法显示?
JavaScript如何实现错误处理_try...catch如何捕获异常?
如何在云主机上快速搭建网站?
Win11怎样安装网易有道词典_Win11安装词典教程【步骤】
香港服务器网站卡顿?如何解决网络延迟与负载问题?
Laravel如何使用Collections进行数据处理?(实用方法示例)
Android okhttputils现在进度显示实例代码
手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?
如何快速查询网址的建站时间与历史轨迹?
JavaScript Ajax实现异步通信
如何获取PHP WAP自助建站系统源码?
html5audio标签播放结束怎么触发事件_onended回调方法【教程】
如何在景安服务器上快速搭建个人网站?
javascript日期怎么处理_如何格式化输出
Win11怎么设置虚拟桌面 Win11新建多桌面切换操作【技巧】
Laravel如何使用Service Provider服务提供者_Laravel依赖注入与容器绑定【深度】
C语言设计一个闪闪的圣诞树
如何在香港服务器上快速搭建免备案网站?
Laravel怎么解决跨域问题_Laravel配置CORS跨域访问
Swift中switch语句区间和元组模式匹配
LinuxShell函数封装方法_脚本复用设计思路【教程】
动图在线制作网站有哪些,滑动动图图集怎么做?
猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?
网站建设要注意的标准 促进网站用户好感度!
悟空浏览器如何设置小说背景色_悟空浏览器背景色设置【方法】
清除minerd进程的简单方法
Linux安全能力提升路径_长期防护思维说明【指导】
活动邀请函制作网站有哪些,活动邀请函文案?
Laravel如何使用Guzzle调用外部接口_Laravel发起HTTP请求与JSON数据解析【详解】
Laravel如何为API编写文档_Laravel API文档生成与维护方法
jQuery validate插件功能与用法详解

