OOP 学习笔记

为何使用类:

使用类不仅仅是为了代码重用,它提供了描述现实世界问题结构和它们之间关系的非常有用的模型。包括两个方面:继承和组合。

我们的知识很大一部分是建立在分类的层次结构之上:将现实世界按各种规则分门别类的分解剖析。掌握之后又通过各种需要组合起来,反过来进一步理解这个世界,产生我们的智慧。

具体到类

  • 它是一种定义新种类的方式。
  • 从程序设计角度看,它又和函数和模块相似——是封装逻辑和数据的另一种方式。
  • 同时类也定义新的命名空间,这点和模块很像。
  • 它有和其它程序组成单元相比有三个显著的特点:
    • 多重实例:类好比是有个模具,每次调用类都会建立一个有自己命名空间的新对象,这个对象能够读取类的属性,并有自己的命名空间来存储自己的数据。
    • 继承:通过继承机制,类建立命名空间的层次结构,可以在这个层次结构中重新定义类的属性从而扩展类。
    • 运算符重载:类通过特定的协议方法,可以定义对象来响应内置类型上的几种运算。

相比C++和Java,Python 的OOP得到了简化。在Python中大多数OOP都可以简化为一个表达式:object.attribute。 当我们使用object.attribute这个表达式读取类的属性,调用对象的方法时,会产生一个动作——启动搜索对象连接树:从下到上,从左到右地搜索对象树,找到这个attribute首次出现的对象。

也就是说,取出一个属性就是简单地搜索一颗“树”。这个搜索过程(机制 ...

更多内容 »»

Django1.7 新增 Migrations 功能

本文是学习Django文档的一个概要,详细内容请阅读 Django文档原文

Django 1.7主要改进内容:

  • 一个新的内置数据库迁移系统
  • Django 应用的一个重构概念
  • 改进了 Field API 模块,支持迁移,未来将会启用简单的组合键,支持 Django's ORM
  • 改进了可定制的 Manager 和 QuerySet 类
  • 一个可扩展的系统检测框架

更多内容请看发行说明。


简介

在Django 1.7 以前,Django 只支持添加新模型到数据库。syncdb命令(migrate命令的前身)不提供删除或更改现有的数据库结构的功能。

从 Django 1.7 开始,Django 将提供一种在你修改你的数据库结构(添加字段或删除表等)后进行数据库迁移的方法,它们大多设计成自动运行,但是你需要知道该什么时候迁移,在什么时候运行它们,以及运行中你可能遇到的常见问题。

工具 ...

更多内容 »»

Jinja2 笔记(一)

Jinjin2 通用模板语言,类似于 Django 的模板,但更加灵活和快速。Jinja2 需要至少 Python 2.4 版本来运行。

Jinjia2 模板引擎中的语法和语义结构

模板仅仅是文本文件。它可以生成任何基于文本的格式(HTML、XML、CSV、LaTex 等等)。 它并没有特定的扩展名, .html 或 .xml 都可以。 模板包括:变量表达式tags。语法灵感主要来自于 Django 和 Python 。{% %}用来执行语句, {{ }}用来返回一个变量的值。

变量

变量是由你的 app 传递进模板来的。它可能有属性或者元素,这完全取决于你传递进来的是什么类型的变量。

更多内容 »»