python之更加抽象 2014-4-6
#更加抽象 12:50pm- 14:50 p112-
1.对象的魔力
多态 如count 在多种数据类型中都可以实现计数的功能
封装 对全局作用域中其他区域隐藏多余信息的原则
继承
2.类和类型
创建类
class Person:
def setName(self,name)
self.name=name
def getName(self):
return self.name
def greet(self):
print "hello I am %s."%self.name
特性 函数和方法
将方法加上私有特性在方法名前加双下划线
__add()
类的命名空间
def foo(x):return x*x
等价于 foo=lambda x:x*x
类的定义实际就是代码快
指定超类
子类可以扩展超类的定义
将其他类名写在class 语句后的圆括号内可以指定超类:
class Filter:
def init(self):
self.blocked=[]
def filter(self,sequence):
return [x for x in sequence if c not in slef.locked]
class SPAMFilter(Filter):#SPAMFiter是Filter的子类
def init(self):#重写Filter超类中的init方法
self.blocked=['SPAM']
调查继承
如果想查看一个类是否是另一个的子类 可以使用内建的issubclass函数
>>>issubclass(SPAMFilter,Filter)
True
>>>issubclass(Filter,SPAMFilter)
False
如果想要值得已知类的基类 可以直接使用它的特殊特性__bases__;
>>>SPAMFilter.__bases__
(<class __main__.Filter at 0x171e40>)
>>>Filter.__bases__
()
同样 还可以使用isinstance方法检查一个对象是否是一个类的实例
>>>s=SPAMFilter()
>>>isinstances(s,SPAMFilter)
True
>>>isinstances(s,Filter)
True
>>>isinstances(s,str)
False
多个超类
class Calculator:
def calculate(self,expression):
self.value=eval(expression)
class Talker:
def talk(self):
print 'Hi,my value is',self.value
class TalkingCalculator(Calculator,Talker):
pass
TalkingCalculator从自己的超类继承所有的行为 从Calculator类继承calculate方法 从Talker类继承talk方法
这样就成了会说话的计算器 talking calculator
这种行为称为多重继承 注意顺序 先继承的类的方法会重写后继承的类中的方法
接口和内省(待补充)
python之更加抽象 2014-4-6的更多相关文章
- 【Python&数据结构】 抽象数据类型 Python类机制和异常
这篇是<数据结构与算法Python语言描述>的笔记,但是大头在Python类机制和面向对象编程的说明上面.我也不知道该放什么分类了..总之之前也没怎么认真接触过基于类而不是独立函数的Pyt ...
- python风格的抽象工厂模式
抽象工厂模式: 提供一个接口,用户创建多个相关或依赖对象,而不需要指定具体类. 原则: 依赖抽象,不依赖具体类. 实例: 用不同原材料制作不同口味的披萨,创建不同原材料的工厂,不同实体店做出口味不同的 ...
- Python高级主题:Python ABC(抽象基类)
#抽象类实例 作用统一规范接口,降低使用复杂度.import abcclass Animal(metaclass = abc.ABCMeta): ##只能被继承,不能实例化,实例化会报错 @abc.a ...
- 【Python】:用python做下百度2014笔试题
国庆节最后一天,明天就要上班了,闲来无事做做百度2014笔试题,好久没用过C++了,索性就用python简单的写一下,体验下题目难度.题目是从[大卫David]那里copy过来的. 1.给定任意一个正 ...
- Python学习5——抽象,涉及抽象和结构、函数的自定义、参数、作用域、递归
此处将抽象和结构.自定义函数.参数的使用.作用域.递归放在一起学习,看起来很怪是不是? 但实际上这几者之间是有紧密联系的,不然Python基础教程(第三版)的作者为什么会把它们放在一起哪?手动滑稽 好 ...
- Python中的抽象基类
1.说在前头 "抽象基类"这个词可能听着比较"深奥",其实"基类"就是"父类","抽象"就是&quo ...
- Python中的抽象超类
# -*- coding:utf-8 -*- class Super(object): def test(self): self.action() class Sub(Super): def acti ...
- 设计模式 -创建型模式 ,python工厂模式 抽象工厂模式(1)
工厂模式 import xml.etree.ElementTree as etree import json class JSONConnector: def __init__(self, filep ...
- python-利用Python窗口可视化抽象开发山寨版翻译软件
1.图片展示: 2.写出上面图式的小脚本需要利用python两个方面的知识: (1)可视化库 (需用库:tkinter) (2)简单爬虫知识 (需用库:requests) 注意:爬虫在获取翻译信息时, ...
- python面向对象之抽象工厂设计模式
class truck: def use(self): return "拉货" def __str__(self): return "大卡车" class mi ...
随机推荐
- JavaScript--DOM浏览器窗口可视区域大小
浏览器窗口可视区域大小 获得浏览器窗口的尺寸(浏览器的视口,不包括工具栏和滚动条)的方法: 一.对于IE9+.Chrome.Firefox.Opera 以及 Safari: • window.inn ...
- ubuntu下进入xampp mysql命令行
在命令行下进入到/opt/lampp/bin目录,使用命令:sudo ./mysql,回车即可. 注意:运行这个命令需要加上sudo,以root权限来运行,不然有些数据库没有权限查看.
- [USACO 2011 Dec Gold] Cow Calisthenics【二分】
Problem 1: Cow Calisthenics [Michael Cohen, 2010] Farmer John continues his never-ending quest to ke ...
- 450 Delete Node in a BST 删除二叉搜索树中的结点
详见:https://leetcode.com/problems/delete-node-in-a-bst/description/ C++: /** * Definition for a binar ...
- [BZOJ1009][HNOI2008]GT考试 DP+矩阵快速幂+KMP
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1009 我们令$dp(i,j)$表示已经填了$i$位,而且后缀与不幸运数字匹配了$j$位,那 ...
- 了解移动用户的隐私期望:一种基于推荐的Crowdsourcing方法
应学习之需,最近一段时间阅读了一篇论文,特写下总结,若有纰漏,还望指出. 目录 引言 推荐机制 实现 评估 心得 1.1 为什么要了解移动用户的隐私期望 1.移动设备的广泛使用存在一些潜在的隐私威胁和 ...
- spark源码编译,运行example遇到:NoClassDefFoundError: org/spark_project/guava/cache/CacheLoader
基本环境: win10+idea Scala2.11.8 maven3.5.3 spark2.1.0 问题: 在window10下编译spark2.1.0源码,在idea下运行example,遇到问题 ...
- Linux修改ssh端口,减少暴力破解
版本centos7 注意:操作时请勿断开当前的ssh连接,以免发生情况登陆不了. 1.修改的是 /etc/ssh/sshd_config 文件 打开文件之后会发现Port是注释掉的,默认为22 ...
- 原生jsonp跨域
<script> // jsonp跨域原生写法 var script = document.createElement('script'); script.src = 'http://19 ...
- html 零散问题
1.iconfont的使用 https://www.cnblogs.com/yujihang/p/6706056.html 2.阴影效果比较 box-shadow:0 0 6px #000 inset ...