无知的 tonyseek

Yet Another Seeker

C 语言程序设计笔记

呵呵,看标题像是大一同学的学习笔记,事实上我是一个大四将毕业的人了。我在大一入学之后认认真真学习的第一个程序语言是 C 语言,当然,是在在课堂上。可是快四年来,我用的最多的却是各路动态语言(人生短暂我用 Python)。后来毕业设计需要选题,我跟了一个很有黑客精神的导师 [0] ,所以也就希望能挑战一下自己,选择了用我并不熟悉的 C 语言来做系统编程&网络编程。

那个项目 [1] 总算还花了我不少时间和精力,虽然答辩时遇到了奇葩的人并发生了不愉快的事情,但我终究是学到了不少东西。这篇博客用来记录我掉的那些坑,并让读者看到后可以对我说:“你还是回大一去重学吧”。

Python 描述符(descriptor) 杂记

Python 引入的“描述符”(descriptor)语法特性真的很黄很暴力,我觉得这算是 Python 对象模型的核心成员之一。Python 语言设计的紧凑很大程度上得益于它。所以写一篇笔记文记录关于描述符我知道的一切。

我对策略模式的理解

策略模式(Strategy Pattern)来自四人帮的《设计模式:可复用面向对象软件的基础》一书。先看维基百科的描述:

  • 维基中文站的词条“策略模式” [1]
  • WIKIPEDIA(EN) Strategy Pattern [2]

而我对它的理解,是“隔离出**有多种选择的部分**”,就如工具箱里的多用螺丝刀——一把螺丝刀可以装上十字头、一字头甚至是锥子头。

多用螺丝刀图片,来自维基共享资源,采用知识共享署名-相同方式共享 3.0 Unported 许可协议授权

Python 对象的实例化过程

我们知道,Python 的构造函数有两个,一个是我们最常用的 __init__ ,另一个是很少用到的 __new__ 。而从它们的函数定义 def __new__(cls, [...])def __init__(self, [...]) 可以知道, __init__ 被调用时实例已经被创建(就是 self 参数所引用的);而 __new__ 被调用的时候,实例不一定已被创建(暂时只能这么说),而 __new__ 的第一个参数为当前类的引用。

所以我们可以通过一些途径,跟踪 Python 对象的实例化过程,来研究 __new____init__ 的工作。这个途径就是上一篇博文 利用 with 语法实现可拆卸的装饰器 中用到的函数调用轨迹装饰器。