第七章-更加抽象——python基础教程(第二版)笔记
来源:互联网 发布:centos 7 安装desktop 编辑:程序博客网 时间:2024/05/16 13:59
创建自己的对象,听着真刺激
7.1对象的魔力
**对象特点:
1.多态(polymorphic):对不同类的对象使用相同的操作
2.封装( encapsulation):对外部世界隐藏对象的工作细节
3.继承(inheritance):以通用的类为基础建立专门的对象**
7.1.1多态
'''def getnum(object): #以列表,元组和字典形式都可以调用的函数 if isinstance(object,tuple):#isinstance进行类型检查,是否是元组 return object[1] elif isinstance(object,dict):#是否是字典 return int(object["num"]) else: return magic_network_method(object)'''print 1+1print "hello"+"world" #加号也是一种多态,无论数字还是数组都可以相加
7.1.2封装
7.1.3继承
7.2类和类型
#7.2.2创建自己的类(class)_metaclass_=type #确定使用新式类class Person: #person 类的名字,class语句会在函数定义的地方创建自己的命名空间 def setName(self,name): self.name=name def getName(self): return self.name def greet(self): print "hello,world! I'm %s."% self.name foo=Person()bar=Person()foo.setName("luke skywalker")bar.setName("anakin skywalker")foo.greet() #结果hello,world! I'm luke skywalker.bar.greet() #结果hello,world! I'm anakin skywalker.#7.2.3特效、函数和方法class Class: def method(self): print "abc"def function(): print "def"instance=Class() #调用类instance.method() #调用类中的method 结果abcinstance.method=function #将特性绑到普通函数上instance.method() #结果defa=instance.method #绑定方法a() #结果def#私有化,与封装结合#7.2.4类的命名空间#两个等价的语句def foo(x): return x*xprint foo(3) #结果 9foo=lambda x:x*xprint foo(3) #结果 9#在类命名空间中执行#7.2.5指定超类#单独定义类中的子类class Filter: def init(self): self.blocked=[int] def filter(self,sequence): return[x for x in sequence if x not in self.blocked]class SPAMFilter(Filter): #fliter类中的一个子类 def init(self):#重写Filter中的init方法 self.blocked=["SPAM"]f=Filter()f.init()print f.filter([1,2,3]) #结果[1,2,3]s=SPAMFilter()s.init()print s.filter(["SPAM","a","c"]) #结果['a', 'c']#7.2.6检查继承,查看一个类是否是另一个类的子类print issubclass(SPAMFilter,Filter) #使用is subclass函数判断是否是子类#7.2.7多个超类,多重继承(multiple inheritance)class Calculator: def calculate(self,expression): self.value=eval(expression)class Talker: def talk(self): print "value is",self.valueclass TalkingCaculator(Calculator,Talker):#多重继承 passa=TalkingCaculator()a.calculate("1+2")a.talk() #结果value is 3#7.2.8接口和内省print hasattr(a,"talk") #结果Ture
0 0
- 第七章-更加抽象——python基础教程(第二版)笔记
- Python基础教程第七章学习笔记——更加抽象
- python学习笔记——第七章 更加抽象(对象)
- Python学习笔记【七】——《python基础教程》:: 更加抽象
- 第六章-抽象——python基础教程(第二版)笔记
- 【Python基础教程笔记(三)】抽象,更加抽象和异常
- <<Python基础教程>>学习笔记 | 第07章 | 更加抽象
- 《Python基础教程》学习笔记 Chp7 更加抽象
- 学习《Python基础教程(第二版)》笔记9--抽象1
- 学习《Python基础教程(第二版)》笔记10--抽象2
- 《Python基础教程》学习笔记之[D8]更加抽象——类
- 第七章 更加抽象
- 第七章 更加抽象
- 第二章-列表和元组——python基础教程(第二版)笔记
- [学习笔记—Objective-C]《Objective-C-基础教程 第2版》第二章~第七章
- 笔记-Python基础教程(第二版)第二章
- 第七章 更加抽象——面向对象
- 第十五章-Python和web——python基础教程(第二版)笔记
- Linux Nginx安装
- hdu 4374 One hundred layer (DP+单调队列)@
- 《哲学家们都干了些什么》读书笔记
- 有序数列中找特定数
- 《effective c++》条款二:尽量以enum,const,inline替换#define
- 第七章-更加抽象——python基础教程(第二版)笔记
- 未完成题目
- 八卦基督教和穆斯林(转)
- python3 ORM重难点
- UVA-10892 LCM Cardinality
- 【VS2013】目录结构,文件的组成结构
- 上手LaTeX-基本文档结构
- Spring 入门 上 (xml 配置方式)
- Ubuntu下配置Anaconda