
Python 面向对象编程
封装:对象具有信息的隐蔽性,对象内的函数是对象的封装。例如, 继承:继承是指子类自动共享父类的方法与机制。例如, 多态:不同对象对同一方法有不同的响应。例如:
发布日期:2021-05-07 23:05:28
浏览次数:22
分类:精选文章
本文共 1360 字,大约阅读时间需要 4 分钟。
面向对象概念
面向对象(Object-Oriented, OO)是 Python 语言的一大特点。对象在 Python 中被定义为属性与方法的结合体。属性是类中静态的特征,而方法则是类中动态且可被调用的内置函数。
定义对象时,我们需要使用保留字 class
作为变量名称的开头,且首字母为大写字母。类名的小括号内可以指定继承的父类。
例如:
class Mylist(list): passls = Mylist()ls.append(1)ls.append(6)ls.append(4)ls[1, 6, 4]ls.sort()ls[1, 4, 6]
面向对象的特征
list
类中的内置函数 append
。class MyList(list)
,MyList 实例化的对象会继承 list 的方法。class A: def fun(self): print("A")class B: def fun(self): print("B")a = A()b = B()a.fun() # 输出 Ab.fun() # 输出 B
面向对象的方法
特殊方法:__init__
和 __()
。
__init__
是在类生成时被直接调用,用于初始化对象属性,接受self
作为参数(可以传递属性)。- 例如:
class Ball: def __init__(self, name): self.name = name def eat(self): print("%s很爱吃" % self.name)a = Ball("土豆")a.eat() # 输出:土豆很爱吃c = Ball() # 会报错,因为 __init__ 缺少参数
属性的私有化:
- 在类中定义属性为私有属性,例如:
class Person: __name = "Python"
- 可以通过
GetName
方法访问私有属性:
class Person: __name = "Python" def GetName(self): return self.__nameq = Person()q.GetName() # 输出:Python
- 注意:Python 的伪私有化机制会将属性名改为
_Classname__attribute
,例如:
class Person: __name = "Python"q = Person()q.name # 输出:AttributeError: 'Person' object has no attribute 'name'q._Person__name # 输出:Python
总结
- OOA(面向对象分析方法):确定需求或业务的角度,按照面向对象的思想进行分析。
- OOD(面向对象设计方法):对 OOA 分析结果进行规范化整理,以便被 OOP 接受。
- OOP(面向对象编程):一种计算机编程架构,基于对象的原则,程序由单元或对象组成。
发表评论
最新留言
不错!
[***.144.177.141]2025年04月28日 21时33分32秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
【奇淫巧技】Java动态代理(JDK和cglib)
2019-03-15
MP4修改元数据日志记录
2019-03-15
WebView使用
2019-03-15
【Stimulsoft Reports.Net教程】使用DesignerFx
2019-03-15
Python | 02.下载视频(普通视频、m3u8加密视频ts)
2019-03-15
攻防世界 Pwn 新手
2019-03-15
mybtis-plus 出现 Wrong namespace
2019-03-15
理解JavaScript的临时包装对象
2019-03-16
2008年7月20日星期日
2019-03-16
c#启动本机程序
2019-03-16
用户登陆的验证码的制作
2019-03-16
判断远程文件是否存在
2019-03-16
升级java11后,maven命令打包报错
2019-03-16
springboot redis key乱码
2019-03-16
Win10禁用自带的笔记本键盘
2019-03-16
insmod模块的几种常见错误
2019-03-16
shell及脚本4——shell script
2019-03-16
写时复制集合 —— CopyOnWriteArrayList
2019-03-16
什么是redis的缓存雪崩, 穿透, 击穿?
2019-03-16