python之路——26
复习
1.python没有接口类,有抽象类, 通过abc模块
本质是用来做代码规范用的,在子类中实现和父类方法名完全一样的方法
2.在java的角度看,是有区别的
java没有多继承,为了接口隔离原则,设计了接口的概念,用以实现多继承
java本来就支持多继承,所以就有了抽象类 python 支持单继承与多继承,所以对于接口类和抽象类的区别不明显,
python 没有内置接口类
3.多态
python天生支持多态,
4.鸭子类型
不依赖父类的情况下,实现两个相似的类中的同名方法
5.封装
python中 __名字= 私有化
私有化后,不能从类的外部直接调用
静态属性、方法、对象属性,都可以私有化
这种私有化,只是从代码级别做了变形,并没有真的约束
__类名__名字 类外部调用, __名字 内部调用
学习内容
1.私有属性的用处
1.隐藏属性,不希望外部调用
2.保护属性1,不被随意改变
3.保护属性2,不被子类继承
2.property
内置装饰器函数,只在面向对象中使用
将方法伪装成属性
结合私有属性使用
配合setter deleter 使用
3.classmethod
类方法,修改类的私有类型静态属性
4.staticmethod
静态方法,完全面向对象编程中,一个函数与对象和类均无关,用其将函数伪装成静态方法
5.反射
代码区
from math import pi
class Circle:
discount = 10
def __init__(self, r, name):
self.r = r
self.__name = name
def haha(self):
print('jajaja')
return 'aaaa'
@property
def perimeter(self):
return 2*pi*self.r
@property
def area(self):
return self.r**2*pi
@property
def name(self):
return self.__name +'sb'
@name.setter
def name(self,new_name):
self.__name = new_name
@name.deleter
def name(self):
del self.__name c1 = Circle(5,'wang')
print(c1.area)
print(c1.name)
c1.name = 'li'
print(c1.name)
del c1.name
print(c1.discount)
c1.discount = 1
print(c1.discount)
ret = getattr(c1,'haha')
print(ret())
python之路——26的更多相关文章
- 【python之路26】字符串之格式化%和format
Python基础之杂货铺 字符串格式化 Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式, ...
- 【python之路26】模块
模块简介 一.time模块二.sys模块三.datetime模块四.pickle模块 五.json模块六.OS模块七.hashlib加密模块八.第三方模块的安装方法九.requests模块十.XML模 ...
- Python之路【第十九篇】:爬虫
Python之路[第十九篇]:爬虫 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常使用 ...
- Python之路【第十八篇】:Web框架们
Python之路[第十八篇]:Web框架们 Python的WEB框架 Bottle Bottle是一个快速.简洁.轻量级的基于WSIG的微型Web框架,此框架只由一个 .py 文件,除了Pytho ...
- Python之路【第十七篇】:Django【进阶篇 】
Python之路[第十七篇]:Django[进阶篇 ] Model 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接 ...
- Python之路【第十五篇】:Web框架
Python之路[第十五篇]:Web框架 Web框架本质 众所周知,对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端. 1 2 3 4 5 6 ...
- Python之路【第九篇】:Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy
Python之路[第九篇]:Python操作 RabbitMQ.Redis.Memcache.SQLAlchemy Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用 ...
- Python之路【第八篇】:堡垒机实例以及数据库操作
Python之路[第八篇]:堡垒机实例以及数据库操作 堡垒机前戏 开发堡垒机之前,先来学习Python的paramiko模块,该模块机遇SSH用于连接远程服务器并执行相关操作 SSHClient ...
- Python之路【第七篇】:线程、进程和协程
Python之路[第七篇]:线程.进程和协程 Python线程 Threading用于提供线程相关的操作,线程是应用程序中工作的最小单元. 1 2 3 4 5 6 7 8 9 10 11 12 1 ...
随机推荐
- 面试知识点准备-C++常见问题
博客园写写格式简单的文章还行,格式一复杂就不行了,可能是我不会用吧,我有强迫症,有道云格式很好用,以后去有道写这种东西了 有道云笔记链接:http://note.youdao.com/noteshar ...
- easyui获取选中行上一行的数据
text: 'XX', iconCls: 'icon-ok', handler: function () { var rowI ...
- scott 本月报将收录移动Web加速技术的主要进展,欢迎读者一起完善,投稿邮箱:openweb@baidu.com
_trackPageview 功能说明 用于发送某个URL的PV统计请求,适用于统计AJAX.异步加载页面,友情链接,下载链接的流量. 代码语法 _czc.push(["_trackPage ...
- 从hivesql结果中读取数值到shell变量的方法
为了检查hive表中的数据,并统计展现,需要将查出的结果传入到shell变量,然后统一输出到文本. 最后使用了以下两个方法: 方法一 QUAN=$(hive -S -e "select co ...
- 常用git操作命令
查看远程仓库 ->$ git remote -v 如果你本地有一个项目,想把他放到远程git服务器上,那就用上面的命令把项目 add 到远程服务器 ->$ git remote a ...
- CentOS 7 yum安装nginx-1.12.0
CentOS 7 中的 yum 没法直接使用 yum install nginx 这个指令去安装nginx,因为nginx这个服务不是yum库中自带的.图1是官方提供的大致安装步骤,图2是官网提供的多 ...
- Ajax会自动将返回的对象属性首字母转化为小写
今天在使用Ajax的时候遇到的问题. $.ajax({ type: "post", url: "<%=basePath%>reserd'f'w/liswe'f ...
- 30天代码day2 Operators
Operators These allow you to perform certain operations on your data. There are 3 basic types: Unary ...
- Layer弹出层销毁问题
Layer弹出层销毁问题 最近开发时有个问题记录一下 点击按钮显示相应的图表信息,当时自己点感觉没问题,谁知到测试手里多次点击就会有后续打开的窗口无法渲染问题,看了半天才发现是调用layer.clos ...
- new和malloc
1.申请的内存所在位置 自由存储区(free store)是C++基于new操作符的一个抽象概念,凡是new进行内存申请,该内存为自由存储区.堆是操作系统中的术语,是操作系统所维护的一块特殊内存,用于 ...