python--面向对象:多态与封装
2024-10-07 20:19:37
一、多态 :python 天生支持多态
多态指的是一类事物有多种形态 eg:文件有多种形态:文本文件,可执行文件
鸭子类型:python中崇尚鸭子类型,不崇尚根据继承所得来的相似
优点 : 松耦合 每个相似的类之间都没有影响
缺点 : 太随意了,只能靠自觉
#eg序列类型有多种形态:字符串,列表,元组,但他们直接没有直接的继承关系
#eg:如果两个类刚好相似,并不产生父类的子类的兄弟关系,而是鸭子类型
#eg:list tuple 这种相似,是自己写代码的时候约束的,而不是通过父类约束的
举例
class Tuple:
def __len__(self):
return 'aaa'
class List:
def __len__(self):
return 'qqq'
def len(a):
return a.__len__()
l=list()
len(l)
二、封装: 隐藏对象的属性和实现细节,仅对外提供公共访问方式。
# 【好处】
"""
1. 将变化隔离;
2. 便于使用;
3. 提高复用性;
4. 提高安全性;
"""
# 【封装原则】
"""
1. 将不需要对外提供的内容都隐藏起来;
2. 把属性都隐藏,提供公共方法对其访问。
"""
class Person:
__key=123 # 私有 静态属性
def __init__(self,name,passwd):
self.name=name
self.__passwd=passwd # 私用 动态属性
def __get_passwd(self): #私有方法
return self.__passwd
def login(self):
self.__get_passwd() #支持每部调用查看
#私有方法不能再外部调用,但是我们也是可以加上类名就能调用了,但是不建议使用
join=Person('join',123)
print(join._Person__passwd) #
三、小结
# 所有的私有 都是在变量的左边加上双下划綫
# 对象的私有属性
# 类中的私有方法
# 类中的静态私有属性
# 所有的私有的 都不能在类的外部使用
最新文章
- Linux编程环境
- Codeforces Round #234A
- ORACLE误删除ASM磁盘修复
- tomcat的下载安装和配置以及和eclipse的配置
- MyBatis学习总结(七)——Mybatis缓存
- xml技术DTD约束定义
- Cookie及App登陆的原理
- text-overflow:ellipsis的巧妙运用
- 插头DP题目泛做(为了对应WYD的课件)
- 扩展SpringMVC以支持绑定JSON格式的请求参数
- vim 替换
- android开发之多线程实现方法概述
- Linux下的常见压缩解压缩命令
- 如何优雅的解决mac安装zsh不执行.bash_profile
- 学习笔记: 反射应用、原理,完成扩展,emit动态代码
- orm查询语法参考文章
- 多线程串口编程工具CserialPort类(附VC基于MFC单文档协议通讯源程序及详细编程步骤)
- java线程大全一讲通
- 解决CentOS7-python-pip安装失败
- flume-elasticsearch-sink indexName
热门文章
- overflow:hidden失效
- python 根据字典的键值进行排序
- WPF非UI线程访问网络资源造成页面假死现象
- 发现最新版百度Android 定位SDK v6.1.3 网络定位bug
- 升级ssh后续问题
- 牛客多校第六场-H-Pair
- tcp/ip的通俗讲述(转)
- 安卓8.0真机运行appium1.4遇到的问题:运行自动化脚本,手机自动安装 settings.apk和unclock.apk,执行脚本时提示安装UnicodeIME-debug.apk失败,怎么关掉自动安装?
- c# 转16进制
- Nginx配置PHP环境支持