#更加抽象 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的更多相关文章

  1. 【Python&数据结构】 抽象数据类型 Python类机制和异常

    这篇是<数据结构与算法Python语言描述>的笔记,但是大头在Python类机制和面向对象编程的说明上面.我也不知道该放什么分类了..总之之前也没怎么认真接触过基于类而不是独立函数的Pyt ...

  2. python风格的抽象工厂模式

    抽象工厂模式: 提供一个接口,用户创建多个相关或依赖对象,而不需要指定具体类. 原则: 依赖抽象,不依赖具体类. 实例: 用不同原材料制作不同口味的披萨,创建不同原材料的工厂,不同实体店做出口味不同的 ...

  3. Python高级主题:Python ABC(抽象基类)

    #抽象类实例 作用统一规范接口,降低使用复杂度.import abcclass Animal(metaclass = abc.ABCMeta): ##只能被继承,不能实例化,实例化会报错 @abc.a ...

  4. 【Python】:用python做下百度2014笔试题

    国庆节最后一天,明天就要上班了,闲来无事做做百度2014笔试题,好久没用过C++了,索性就用python简单的写一下,体验下题目难度.题目是从[大卫David]那里copy过来的. 1.给定任意一个正 ...

  5. Python学习5——抽象,涉及抽象和结构、函数的自定义、参数、作用域、递归

    此处将抽象和结构.自定义函数.参数的使用.作用域.递归放在一起学习,看起来很怪是不是? 但实际上这几者之间是有紧密联系的,不然Python基础教程(第三版)的作者为什么会把它们放在一起哪?手动滑稽 好 ...

  6. Python中的抽象基类

    1.说在前头 "抽象基类"这个词可能听着比较"深奥",其实"基类"就是"父类","抽象"就是&quo ...

  7. Python中的抽象超类

    # -*- coding:utf-8 -*- class Super(object): def test(self): self.action() class Sub(Super): def acti ...

  8. 设计模式 -创建型模式 ,python工厂模式 抽象工厂模式(1)

    工厂模式 import xml.etree.ElementTree as etree import json class JSONConnector: def __init__(self, filep ...

  9. python-利用Python窗口可视化抽象开发山寨版翻译软件

    1.图片展示: 2.写出上面图式的小脚本需要利用python两个方面的知识: (1)可视化库 (需用库:tkinter) (2)简单爬虫知识 (需用库:requests) 注意:爬虫在获取翻译信息时, ...

  10. python面向对象之抽象工厂设计模式

    class truck: def use(self): return "拉货" def __str__(self): return "大卡车" class mi ...

随机推荐

  1. 求N!尾数有多少个0。

    方法一:假设N!=K*10M,K不能被10整除,那么N!尾数就有M个0.再对N!进行质因子分解:N!=2x*3y*5z...由于10=2*5,即每一对2和5相乘都可以得到1个0,所以M只与指数x.z有 ...

  2. 题解报告:hdu 2602 Bone Collector(01背包)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2602 Problem Description Many years ago , in Teddy’s ...

  3. ACM_不知所措的统计员

    Problem Description: GDUFE-GAME完美结束,按照惯例,会有一篇报道,描述活动期间的盛况,因此相关人员找到负责统计的ASDF,但是ASDF只知道第i个人在S_i时进场,在E_ ...

  4. Nginx反向代理node,实现让静态文件在同一域

    Nginx反向代理node,实现让静态文件在同一域 原文https://github.com/zhuangZhou/Blog/issues/4 不管是Vue还是React,还是传统的网站,与node服 ...

  5. php(三)使用PDO链接数据库

    1.启动 mysql数据库,打开图形化控制界面 2.新建一个数据库 3.创建一个数据表 4.给数据表添加数据 id是数字类型的  类型选择int长度 11 username 等其他数据  会是字符串形 ...

  6. 初识react native遇到的问题

    Andriod 使用react native时遇到的问题     打开现有项目报错: 从第一行Error可以知道是一个zip的压缩文件打不开,往下看应该是下载的Gradle文件有问题,提示也是让从新下 ...

  7. Java编程思想总结笔记Chapter 5

    初始化和清理是涉及安全的两个问题.本章简单的介绍“垃圾回收器”及初始化知识. 第五章  初始化与清理 目录:5.1 用构造器确保初始化5.2 方法重载5.3 默认构造器5.4 this关键字5.5 清 ...

  8. 面试题6:输入一个链表,按链表值从尾到头的顺序返回一个ArrayList

    题目 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList. 思路 使用栈依次存放输入的链表顺序的值,然后依次出栈便是链表的逆序. 代码 import java.util.ArrayList ...

  9. iOS programming UITableView and UITableViewController

    iOS programming  UITableView and UITableViewController A UITableView displays a single column of dat ...

  10. html5开发移动混合App系列1-开发环境搭建

    最近公司准备开发门店收银系统,是基于IPAD的程序,决定采用基于 Ionic + Cordova + AngularJS技术混合开发模式. 准备 一台mac(安装了mac os的虚拟机也可以),nod ...