2011年12月25日星期日

杂记

之前从 pys60 的 keycapture 里学到可以在类里面定义某个私有属性的读写操作,然后用 offset = property(iread, iwrite) 做成公开的样子。可是我自己写出来,整个类实例化后,属性 offset 只能读,一旦对它赋值,它就不再指向 property 的实例了……昨天下午发现,折腾到半夜睡着,今早接着折腾总算抓到这只 bug ——我定义类的时候偷懒只写了 class OOXX: ,改成 class OOXX(object): 就好了。原因是"从 object 继承是为了让类属性能够正常工作……这也定义了一些特殊函数,来实现对象 (object) 的默认语义,包括: __new__ 、 __init__ 、 __delattr__ 、 __getattribute__ 、 __setattr__ 、 __hash__ 、 __repr__ 、和 __str__ 。"( Python 编码风格指南 中译版 (Google SOC) by @EliasCn http://www.elias.cn/Python/PythonStyleGuide )。我的习惯之一就是查到文档类的资料就忍不住中断手里的事情去看完。查到这篇文章我就不抓 bug 改去看文章(反正程序没有 deadline 可以慢慢写),看到接近结尾的时候就恍然了。
昨天收获蛮大的~突然福至心灵理解了断言 assert 到底是干嘛的,终于不用纠结于对付小概率事件了。就像很久以前突然理解函数是啥和几年以前突然理解类是啥一样,充满了恍然大悟的喜悦和对之前自己弱智的鄙视——理解之前,定义可以背下来、有关的问题依葫芦画瓢也能解决,但是实质就是夹生的有看没有懂,我也本能的避免去用,可是不用就很难理解orz
二进制数据用 struct 处理就好。再看那些一个字节一个字节掰的、高端一点转成字符串再切开转换的代码……虽然是别的业余程序员写的,我也很有不堪回首的感觉,因为我本来也准备这么搞,还好多长个心眼问了一下 google 。
前几天不得不在 pys60 里用 re ( N72 上 import 都要好一会儿,我虽然很喜欢正则还是尽量避免使用),顺便记住那四个零宽界定符:后向肯定 (?<=…) ,后向否定 (?<!…) ,前向肯定 (?=…) ,前向否定 (?!…) 。在 (?……) 的省略号部分:前向就是界定匹配部分的开头位置,直接写,后向是在结尾,加个 < ;要匹配用 = 要排除用 ! 。清除汉字(不考虑 unicode 扩展平面的生僻字)之间的空格 re.sub(u'(?<=[\u3000-\u9fff])\u0020(?=[\u3000-\u9fff])','', s) ;单独的换行替换为两个换行 re.sub(r'(?<!\n)\n(?!\n)','\n\n',s) 。
每次在 N900 上写 shell 脚本再回到 N72 写 python , 0 是真的还是假的就要糊涂一阵……苦思一天之后我顿悟了~赞美耽美之神的造化:大蟒蛇当然是攻,所以真的是 1 ;于是贝壳是受,所以真的是 0 ……我想我是再也不会记混了XD
记得小时候看李敖的文章,他谈起有人问他靠写书挣钱、每天码很多很多字"灵感"何来,他的回答大意是靠灵感码字的职业作家就像靠性欲接客的妓女一样不靠谱。我是靠兴趣爬代码,所以同样不靠谱。不过既然不是养家糊口的工作而是闲暇时光的享乐,只要自己爽到就好了嘛XD

--

没有评论:

发表评论