python第十八天 多态 和 私有
python的多态比较特别
多态, 字面意思,多种状态. 扩展下 -> 执行同样的操作,结果却不同.
对使用的操作者来说, 就是执行同一个方法, 得到了不同的结果. 在操作者看来,像是 具备 多种状态的特性.
class A:
def run(self):
print('run a a a') class B:
def run(self):
print('fly b b b') def execute(obj):
obj.run() execute(A()) run a a a
execute(B()) fly b b b
从如上代码可以知道, A类 和 B 类 唯一的共同点,就是都默认继承 object类.
A 类中定义的 方法 run, B 类中 也 定义了 方法 run
这两个方法分别定义的, 完全可以执行不同的逻辑操作代码.
函数 execute中, 局部变量 obj调用了 run方法, 如果实参obj 本身没有 run方法, 程序就会报错
所以,这就要求python开发者, 遵守python规范
类的私有变量
class A:
__name = 'A' 在名称前, 加两个下划线, 类的静态变量,就变成了 类的私有变量 def test(self):
print(self.__name) 只能在 类内部 中被引用, 在外部或子类中,都不能使用
类的私有方法
同样是在名称前 加两个下划线
对象的私有变量
同样是在名称前 加两个下划线
python第十八天 多态 和 私有的更多相关文章
- python 面向对象之多态与绑定方法
多态与多态性 一,多态 1,多态指的是一类事物有多种形态(python里面原生多态) 1.1动物有多种形态:人,狗,猪 import abc class Animal(metaclass=abc.AB ...
- python之类的多态(鸭子类型 )、封装和内置函数property
一.多态 1.什么是多态:一个类表现出的多种状态--->通过继承来实现的例如:class Animal:passclass Dog(Animal):passclass Cat(Animal):p ...
- Python 面向对象5 多态
一.多态 多态性(polymorphisn)是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作,简单的说就是一句话:允许将 ...
- python中的多态
# -*- coding: cp936 -*- #python 27 #xiaodeng #python中的多态 #多态:一个操作的意义取决于被操作对象的类型,相同的消息给予不同的对象会引发不同的动作 ...
- Python类总结-多态及鸭子类型
Python天生支持多态. 什么是多态: 一类事务的多种形态. 多态的一个例子 class Alipay(): def pay(self,money): print('用支付宝支付了%s元' % mo ...
- 孤荷凌寒自学python第二十八天python的datetime.date模块
孤荷凌寒自学python第二十八天python的datetime.date模块 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 一.toordinal() 此方法将访问从公元1年1月1日至当 ...
- 孤荷凌寒自学python第二十四天python类中隐藏的私有方法探秘
孤荷凌寒自学python第二十四天python类中隐藏的私有方法探秘 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 今天发现了python的类中隐藏着一些特殊的私有方法. 这些私有方法不管我 ...
- 孤荷凌寒自学python第十八天python变量的作用范围
孤荷凌寒自学python第十八天python函数的形参与变量的范围 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 一.在python的函数中各种不同的形式参数在定义的先后顺序上有规定: 必须 ...
- Python之面向对象多态
Python之面向对象多态 多态与多态性: 多态: 多态是指一类事物有多种形态,一个抽象类有多个子类,因而多态的概念依赖于继承. 1.序列类型有多种形态:字符串.列表.元组. 2.动物有多种形态:Pe ...
随机推荐
- java.lang.IllegalArgumentException: Document base XXX does not exist or is not a readable directory解决方法
一.配置Eclipse,部署项目 1.双击打开Tomcat设置页面 2.选择Modules模式 3.选择Add External Web Module.. (1)Document base:选择htd ...
- 利用SUM打java补丁
Upgrade Single JAVA Component Patch Level Using SUM Tool Hi Friends, I came across few posts/threads ...
- Struts2高位漏洞升级到struts2.3.32
Struts2高位漏洞升级到struts2.3.32 3月7日带来了一个高危漏洞Struts2漏洞——CVE编号CVE-2017-5638.其原因是由于Apache Struts2的Jakarta M ...
- Flask 中关于‘蓝图’ 的使用-------------------
Blueprint是一个存储操作方法的容器,这些操作在这个Blueprint被注册到一个应用之后就可以被调用,Flask可以通过Blueprint来组织URL以及处理请求 Blueprint使用时应先 ...
- django用户权限操作
第一步:创建数据库和超级管理员,为了比较方便使用(里面有些的是没用的),额外新增 chioces , per_method , argument_list # 用户权限# 建立一个权限表,将映射关系存 ...
- MySQL创建数据库时指定编码utf8mb4和添加用户
CREATE DATABASE `wordpress` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; CREATE DATABASE `wor ...
- nodejs 实现文件拷贝
通过4中不通的方式实现对一个文件的拷贝 方式一:readFile 异步一次性读取文件再写入 //异步形式读取文件 function copyFile(url){ const extName = pat ...
- node note
1.关于next() next()函数接受一个Error对象,在判断错误时,返回这个next()函数,并传入自定义的Error对象可以被向下捕捉,你也可以自定义统一捕捉错误Error的中间件,在app ...
- MySQL 自带4个默认数据库
默认数据库分类: information_schema performance_schema mysql test informance_schema 保存了MySQl服务所有数据库的信息. 具体My ...
- 孤儿进程VS僵尸进程
我们知道在unix/linux中,正常情况下,子进程是通过父进程创建的,子进程在创建新的进程.子进程的结束和父进程的运行是一个异步过程,即父进程永远无法预测子进程 到底什么时候结束. 当一个 进程完成 ...