linyawen

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2012年4月11日

摘要: 简介从具体的程序观点来看,类是python的程序组成单元,就像函数和模块一样;类是封装逻辑和数据的另一种形式。python中的oop需要特别考虑:1.多重实例,类基本就是产生对象的工厂;(多对象产生)2.通过继承进行定制,类可以建立命名空间的层次结构;(命名空间继承)3.运算符重载,python提供了一些可以由类使用的钩子,从而能够中断并实现任何的内置类型运算;(运算符重载)本质python类的本质:1.class语句创建类对象并将其赋值给变量名;2.class语句内的赋值语句会创建类的属性;3.类属性提供对象的状态和行为;实例对象的本质:1.像函数一样调用类对象会创建新的实例对象;2.每个实 阅读全文
posted @ 2012-04-11 15:36 linyawen 阅读(308) 评论(0) 推荐(0) 编辑

摘要: 类可以重载python的操作符操作符重载使我们的对象与内置的一样。__X__的名字的方法是特殊的挂钩(hook),python通过这种特殊的命名来拦截操作符,以实现重载。 python在计算操作符时会自动调用这样的方法,例如:如果对象继承了__add__方法,当它出现在+表达式中时会调用这个方法。通过重载,用户定义的对象就像内置的一样。在类中重载操作符1、操作符重载使得类能拦截标准的python操作。2、类可以重载所有的python的表达式操作符。3、类可以重载对象操作:print,函数调用,限定等。4、重载使得类的实例看起来更像内置的。5、重载是通过特殊命名的类方法来实现的。方法名 重载的操 阅读全文
posted @ 2012-04-11 15:19 linyawen 阅读(5681) 评论(0) 推荐(1) 编辑

摘要: python的面向对象的设计和c++等编译语言不同,主要注意的是:python的类没有访问权限的问题,也就是说所有的变量都是可访问的。实际上python有私有的机制,就是在属性前加__,但是这种私有机制实际上也是伪私有,因为它其实是用一个别名来保存这个属性。例如在类A中的self.__a = 4, 实际上__a被修改成了_A__a保持在类中了。没有static的说法了,类和实例是区分看待的,一个属性或者方法可以属于类也可以属于实例。看下面的例子classA: i='classvar'def__init__(self): self.i='instancevar'a 阅读全文
posted @ 2012-04-11 15:16 linyawen 阅读(267) 评论(0) 推荐(0) 编辑

摘要: # 内置数据结构-元组(Tuple)、列表(List)、字典(Dictionary)——2009-12-31.元组的正序、倒序、切片的三种索引使用方法:>>> tuple = ('a','b','c','d','e') #定义一个元组tuple>>> tuple[2] #索引2的元素(从0开始,从头开始--正序索引)'c'>>> tuple[-2] #索引-2的元素(元组中倒数第2的元素,从尾开始--倒序索引)'d'>> 阅读全文
posted @ 2012-04-11 14:42 linyawen 阅读(339) 评论(0) 推荐(0) 编辑

摘要: 转自http://blog.sina.com.cn/s/blog_3fe961ae0100kew0.html像函数一样,Python中的类方法也是一种对象。由于既可以通过实例也可以通过类来访问方法,所以在Python里有两种风格:未绑定的类方法:没有self通过类来引用方法返回一个未绑定方法对象。要调用它,你必须显示地提供一个实例作为第一个参数。绑定的实例方法:有self通过实例访问方法返回一个绑定的方法对象。Python自动地给方法绑定一个实例,所以我们调用它时不用再传一个实例参数。两种方法都是对象,它们可以被传递、存入列表等待。两者运行时都需要一个实例作为第一参数(妤一个self值),但当 阅读全文
posted @ 2012-04-11 14:19 linyawen 阅读(4760) 评论(0) 推荐(1) 编辑

摘要: Subclipse是eclipse的一个svn的插件,哄骗Subclipse可以或许便利进行代码的版本经管和协同开辟官方网站:http://subclipse.tigris.org/最新版本:1.8 (更新于2011-1-25)安装步调:打开eclipse->Help->Install New Software…。在弹出的对话框的Work with一栏中输入网址:http://subclipse.tigris.org/_1.8.x,然后后点击Add按钮弹出对话框Add Repository。在Name中输入Subclipse(或者其他随便率性名字),点击OK!守候载入后点击Next 阅读全文
posted @ 2012-04-11 11:55 linyawen 阅读(1197) 评论(0) 推荐(0) 编辑

摘要: 你想复制一个对象.因为在Python中,无论你把对象做为参数传递,做为函数返回值,都是引用传递的.讨论:标准库中的copy模块提供了两个方法来实现拷贝.一个方法是copy,它返回和参数包含内容一样的对象.import copynew_list = copy.copy(existing_list)有些时候,你希望对象中的属性也被复制,可以使用deepcopy方法:import copynew_list_of_dicts = copy.deepcopy(existing_list_of_dicts)当你对一个对象赋值的时候(做为参数传递,或者做为返回值),Python和Java一样,总是传递原始对 阅读全文
posted @ 2012-04-11 11:33 linyawen 阅读(550) 评论(0) 推荐(0) 编辑

摘要: VS2005环境为例一 C/C++设置1.调试信息格式:a.禁用b.C7 兼容(/Z7)c.程序数据库(/Zi)d.用于“编辑并继续”的程序数据库(/ZI)e.<从父级或项目默认设置继承>疑问:/EDITANDCONTINUE:这个功能的原理在于调试时将所有函数的起始地址放到一个ILT(incremental link table)内存中,这样每个函数修改时不会影响到其它函数的地址或者说影响的机会很小。此处与d选项的关系是什么呢?为何在VS2005中没有找到单独的/EDITANDCONTINUE这个编译选项呢?2.预编译头:a.不使用预编译头b.创建预编译头(/Yc)c.使用预编译 阅读全文
posted @ 2012-04-11 08:46 linyawen 阅读(1288) 评论(0) 推荐(0) 编辑