摘要:
The Singleton PatternThe Singleton pattern is thus known because it restricts instantiation of a class to a single object. Classically, the Singleton ... 阅读全文
摘要:
The Module PatternModulesModules are an integral piece of any robust application's architecture and typically help in keeping the units of code for a ... 阅读全文
摘要:
In classical object-oriented programming languages, a constructor is a special method used to initialize a newly created object once memory has been a... 阅读全文
摘要:
多个人共同操作同一个项目或拷贝项目时,经常会出现类似这样的问题:Undefined symbols for architecture i386:"_OBJC_CLASS_$_xx文件名", referenced from:下面是可能导致这类问题出现的原因及修改:1.相关工程文件未导入你可以直接在这里... 阅读全文
摘要:
编辑器的选择(Editor Choices)从初学编程到现在,我用过的编辑器有EditPlus、UltraEdit、Notepad++、Vim、TextMate和Sublime Text,如果让我从中推荐,我会毫不犹豫的推荐Vim和Sublime Text,原因有下面几点:跨平台:Vim和Subli... 阅读全文
摘要:
在程序运行的过程中,如果发生了错误,可以事先约定返回一个错误代码,这样,就可以知道是否有错,以及出错的原因。在操作系统提供的调用中,返回错误码非常常见。比如打开文件的函数open(),成功时返回文件描述符(就是一个整数),出错时返回-1。用错误码来表示是否出错十分不便,因为函数本身应该返回的正常结果... 阅读全文
摘要:
在程序运行过程中,总会遇到各种各样的错误。有的错误是程序编写有问题造成的,比如本来应该输出整数结果输出了字符串,这种错误我们通常称之为bug,bug是必须修复的。有的错误是用户输入造成的,比如让用户输入email地址,结果得到一个空字符串,这种错误可以通过检查用户输入来做相应的处理。还有一类错误是完... 阅读全文
摘要:
看到类似__slots__这种形如__xxx__的变量或者函数名就要注意,这些在Python中是有特殊用途的。__slots__我们已经知道怎么用了,__len__()方法我们也知道是为了能让class作用于len()函数。除此之外,Python的class中还有许多这样有特殊用途的函数,可以帮助我... 阅读全文
摘要:
继承是面向对象编程的一个重要的方式,因为通过继承,子类就可以扩展父类的功能。回忆一下Animal类层次的设计,假设我们要实现以下4种动物:Dog - 狗狗;Bat - 蝙蝠;Parrot - 鹦鹉;Ostrich - 鸵鸟。如果按照哺乳动物和鸟类归类,我们可以设计出这样的类的层次:但是如果按照“能跑... 阅读全文
摘要:
在绑定属性时,如果我们直接把属性暴露出去,虽然写起来很简单,但是,没办法检查参数,导致可以把成绩随便改:s = Student()s.score = 9999这显然不合逻辑。为了限制score的范围,可以通过一个set_score()方法来设置成绩,再通过一个get_score()来获取成绩,这样,... 阅读全文
摘要:
正常情况下,当我们定义了一个class,创建了一个class的实例后,我们可以给该实例绑定任何属性和方法,这就是动态语言的灵活性。先定义class:>>> class Student(object):... pass...然后,尝试给实例绑定一个属性:>>> s = Student()>>>... 阅读全文
摘要:
数据封装、继承和多态只是面向对象程序设计中最基础的3个概念。在Python中,面向对象还有很多高级特性,允许我们写出非常强大的功能。我们会讨论多重继承、定制类、元类等概念。 阅读全文
摘要:
当我们拿到一个对象的引用时,如何知道这个对象是什么类型、有哪些方法呢?使用type()首先,我们来判断对象类型,使用type()函数:基本类型都可以用type()判断:>>> type(123)>>> type('str')>>> type(None)如果一个变量指向函数或者类,也可以用type()... 阅读全文
摘要:
在OOP程序设计中,当我们定义一个class的时候,可以从某个现有的class继承,新的class称为子类(Subclass),而被继承的class称为基类、父类或超类(Base class、Super class)。比如,我们已经编写了一个名为Animal的class,有一个run()方法可以直接... 阅读全文
摘要:
在Class内部,可以有属性和方法,而外部代码可以通过直接调用实例变量的方法来操作数据,这样,就隐藏了内部的复杂逻辑。但是,从前面Student类的定义来看,外部代码还是可以自由地修改一个实例的name、score属性:>>> bart = Student('Bart Simpson', 98)>>... 阅读全文
摘要:
面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如Student类,而实例是根据类创建出来的一个个具体的“对象”,每个对象都拥有相同的方法,但各自的数据可能不同。仍以Student类为例,在Python中,定义类是通过class关键字:class Stu... 阅读全文
摘要:
面向对象编程——Object Oriented Programming,简称OOP,是一种程序设计思想。OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数。面向过程的程序设计把计算机程序视为一系列的命令集合,即一组函数的顺序执行。为了简化程序设计,面向过程把函数继续切分为子函数,即把... 阅读全文
摘要:
>>> d = {'a':1}>>> print '%s' % 1,d1 {'a': 1}>>> print '%s %s' % 1,dTraceback (most recent call last): File "", line 1, in TypeError: not enough argu... 阅读全文
摘要:
Python的每个新版本都会增加一些新的功能,或者对原来的功能作一些改动。有些改动是不兼容旧版本的,也就是在当前版本运行正常的代码,到下一个版本运行就可能不正常了。从Python 2.7到Python 3.x就有不兼容的一些改动,比如2.x里的字符串用'xxx'表示str,Unicode字符串用u'... 阅读全文
摘要:
在Python中,安装第三方模块,是通过setuptools这个工具完成的。如果你正在使用Mac或Linux,安装setuptools本身这个步骤就可以跳过了。如果你正在使用Windows,请首先从这个地址下载ez_setup.py:https://pypi.python.org/pypi/setu... 阅读全文