2012年5月23日

摘要: 继承具有如下优点:实现新的类非常容易,因为基类的大部分功能都可以通过继承关系自动赋予派生类;修改或者扩展继承来的实现非常容易;只要修改父类,派生的类的行为就同时被修改了。初学面向对象编程的人会认为继承真是一个好东西,是实现复用的最好手段。但是随着应用的深入就会发现继承有很多缺点:继承破坏封装性。基类的很多内部细节都是对派生类可见的,因此这种复用是“白箱复用”;如果基类的实现发生改变,那么派生类的实现也将随之改变。这样就导致了子类行为的不可预知性;从基类继承来的实现是无法在运行期动态改变的,因此降低了应用的灵活性。 继承关系有很多缺点,如果合理使用组合则可以有效的避免这些缺点,使用组合关系将系统 阅读全文
posted @ 2012-05-23 11:20 很多不懂呀。。 阅读(1438) 评论(0) 推荐(0) 编辑
摘要: class AddrBookEntry(object): "地址本" def __init__(self,name,phone): self.name=name self.phone=phone print "初始化:姓名 ",name,"电话 ",phone def updatePhone(self,newphone): self.phone=newphone; print "更改后电话: ",phone#继承class EmplAddBookEntry(AddBookEntry): "员工地址薄&qu 阅读全文
posted @ 2012-05-23 11:16 很多不懂呀。。 阅读(1124) 评论(0) 推荐(0) 编辑

2012年5月22日

摘要: C++是一种面向对象的高级语言。对象和类是C++中的重要内容,对象(Object)是类(Class)的一个实例(Instance)。面向对象设计的重点是类的设计,而不是对象的设计。对于C++程序而言,设计孤立的类是比较容易的,难的是正确设计基类及其派生类。这就和“继承”(Inheritance)和“组合”(Composition)有重要联系了。下面将为大家讲讲这两个概念。1.继承如果A是基类,B是A的派生类,那么B将继承A的数据和函数。例如:这个简单的示例程序说明了一个事实:C++的“继承”特性可以提高程序的可复用性。正因为“继承”太有用、太容易用,才要防止乱用“继承”。我们应当给“继承”立一 阅读全文
posted @ 2012-05-22 16:41 很多不懂呀。。 阅读(3387) 评论(0) 推荐(1) 编辑
摘要: C++中对象的复制就如同“克隆”,用一个已有的对象快速地复制出多个完全相同的对象。一般而言,以下三种情况都会使用到对象的复制: (1)建立一个新对象,并用另一个同类的已有对象对新对象进行初始化,例如:class Rect{private: int width; int height;};Rect rect1;Rect rect2(rect1); // 使用rect1初始化rect2,此时会进行对象的复制 (2)当函数的参数为类的对象时,这时调用此函数时使用的是值传递,也会产生对象的复制,例如:void fun1(Rect rect){ ...}int main(){ Rect rect1; f 阅读全文
posted @ 2012-05-22 14:55 很多不懂呀。。 阅读(416) 评论(0) 推荐(0) 编辑

2012年5月21日

摘要: lambda函数也叫匿名函数,即,函数没有具体的名称。先来看一个最简单例子:deff(x):returnx**2printf(4)Python中使用lambda的话,写成这样:g=lambdax:x**2printg(4)lambda表达式在很多编程语言都有对应的实现。比如C#:varg=x=>x**2Console.WriteLine(g(4))那么,lambda表达式有什么用处呢?很多人提出了质疑,lambda和普通的函数相比,就是省去了函数名称而已,同时这样的匿名函数,又不能共享在别的地方调用。其实说的没错,lambda在Python这种动态的语言中确实没有起到什么惊天动地的作用, 阅读全文
posted @ 2012-05-21 15:50 很多不懂呀。。 阅读(2839) 评论(0) 推荐(0) 编辑
摘要: 【异步编程】 1. 简介 2. 异步设计问题 3. 使用反射(Reflection) 【简介】 编写网络程序有很多方法。下面是三种主要方式: 1. 为每个连接建立一个单独的处理进程。 2. 为每个连接建立一个单独的处理线程(脚注1)。 (线程池) 3. 在一个线程中使用“非阻塞”的系统调用来处理所有的连接。 (回调函数) 当使用一个线程来处理多个连接时,由应用程序而不是操作系统负责调度。通常通过“为每个已经准备好执行读/写操作的连接调用一个事先已经注... 阅读全文
posted @ 2012-05-21 15:32 很多不懂呀。。 阅读(1230) 评论(0) 推荐(1) 编辑
摘要: python新模式的class,即从object继承下来的类有一个变量是__slots__,slots的作用是阻止在实例化类时为实例分配dict,默认情况下每个类都会有一个dict,通过__dict__访问,这个dict维护了这个实例的所有属性,举例如下class base(object): v = 1 def __init__(self): passb = base()print b.__dict__b.x = 2 //可以增加新的变量print b.__dict__运行:{}{'x':2}可见:实例的dict只保持实例的变量,对于类的属性是不保存的,类的属性包括变量和函数。 阅读全文
posted @ 2012-05-21 10:57 很多不懂呀。。 阅读(6180) 评论(0) 推荐(1) 编辑

2012年5月18日

摘要: Part 3: Our Eye-beams Begin to Twist原文:http://krondo.com/?p=1333作者:dave译者:noteditblog:www.notedit.com时间:2011.05.24什么也不做,the twisted way最后我们决定重新用twisted来实现我们异步的读诗的客户端.但首先让我们写一些twisted代码找找twisted 的感觉.下面是一个简单到屁的twisted程序,源码在basic-twisted/simple.pyfrom twisted.internet import reactorreactor.run()你可以像这样运 阅读全文
posted @ 2012-05-18 15:14 很多不懂呀。。 阅读(1717) 评论(0) 推荐(1) 编辑
摘要: 第二部分:slow poetry and the apocalypse原文:http://krondo.com/blog/?p=1247作者:dave译者:notedit时间:2011.05.19我的假设我假设你已经有一些基本的能力去写python程序,并且直到一些socket编程方面的额知识,如果你没有接触过socket请移步这里 socket module documention, 这个系列中的代码例子都是运行在python2.5 和twisted 8.2.0,程序如果不能正确运行请检查你的python和twisted 的版本.获取例子代码你可以在public git repository 阅读全文
posted @ 2012-05-18 15:13 很多不懂呀。。 阅读(1087) 评论(0) 推荐(0) 编辑
摘要: 原文:http://krondo.com/blog/?p=1209作者:dave译者:notedit日期:2011.05.18好久没写过文章了,最近有点空闲打算翻译这个twisted系列教程,英文很烂,中文也很烂,欢迎指正前言最近有人在twisted邮件列表中问有没有一个可以让人快速学习twisted的文档.总体的来说:这个系列不是这样的一个文档.如果你没有很多时间或者耐心的话,这个系列的文章不太适合你.不过,如果你对异步编程了解很少的话,相信一个简短的介绍也不让你完全明白,当然如果你是天才除外.我学习和使用twisted已经好几年了,通过这几年的学习和工作我得出的结论就是:学习twisted 阅读全文
posted @ 2012-05-18 15:01 很多不懂呀。。 阅读(2215) 评论(0) 推荐(0) 编辑

导航