<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>阿债的山寨实验室 &#187; python</title>
	<atom:link href="http://blog.declab.com/tag/python/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.declab.com</link>
	<description></description>
	<lastBuildDate>Thu, 27 May 2010 03:45:41 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Gae环境下第一个uliweb小程序开发</title>
		<link>http://blog.declab.com/web/2008/gae%e7%8e%af%e5%a2%83%e4%b8%8b%e7%ac%ac%e4%b8%80%e4%b8%aauliweb%e5%b0%8f%e7%a8%8b%e5%ba%8f%e5%bc%80%e5%8f%91/</link>
		<comments>http://blog.declab.com/web/2008/gae%e7%8e%af%e5%a2%83%e4%b8%8b%e7%ac%ac%e4%b8%80%e4%b8%aauliweb%e5%b0%8f%e7%a8%8b%e5%ba%8f%e5%bc%80%e5%8f%91/#comments</comments>
		<pubDate>Thu, 12 Jun 2008 00:15:18 +0000</pubDate>
		<dc:creator>阿债</dc:creator>
				<category><![CDATA[WEB开发]]></category>
		<category><![CDATA[gae]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[uliweb]]></category>

		<guid isPermaLink="false">http://rblog.declab.com/2008/1/gae%e7%8e%af%e5%a2%83%e4%b8%8b%e7%ac%ac%e4%b8%80%e4%b8%aauliweb%e5%b0%8f%e7%a8%8b%e5%ba%8f%e5%bc%80%e5%8f%91/</guid>
		<description><![CDATA[Google App Engine申请到了，我的一个GAE网站是[url=http://chirk.appspot.com]http://chirk.appspot.com[/url]。 但它没有默认的首页，于是打算放个“网站正在建设&#8230;”的说明页面上去。比较考究地选用limodou的uliweb框架。 下面就一步步来，我在Windows下开发的。首先你得装Python，我的Windows XP装有Python2.5.2。接着装GAE的SDK，假设装在某分区 /Gae下。 下载uliweb，解压到/Gae/下，将外面这个uliweb目录更名为您的GAE网站名，如我的是chirk，下同。进入刚更名的chirk目录，将app.yaml的第一行 application: uliweb 改为 [color=#2E8B57]application: chirk[/color] 在handlers:下面增加一个URL路由： [color=#2E8B57]- url: /static static_dir: apps/consume/static[/color] 在DOS下进入chirk目录，运行manage.py makeapp test，建立一个名叫test的应用。uliweb帮你生成了基本的代码，放在了chirk/apps/test下。将chirk/apps/settings.py中唯一的一行 INSTALLED_APPS = ['Example'] 改为 [color=#2E8B57]INSTALLED_APPS = ['test'][/color] 在chirk/apps/test/下建立一个目录static，再在static下建三个目录image css js，以后将静态文件分类放在这里。在chirk/apps/test/templates下建一个模板文件 index.html，内容如下： {{=title}} {{=regard}} 最后是重头戏，chirk/apps/test/views.py中的代码： #!/bin/python #-*- coding=utf-8 -*- from frameworks.SimpleFrame import expose @expose('/') def index(): title = "测试页面" regard = "欢迎来到我的网站，网站正在筹建中..." return locals() [...]


No related posts.

以上关联文章由 <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a> 提供支持。]]></description>
			<content:encoded><![CDATA[<p>Google App Engine申请到了，我的一个GAE网站是[url=http://chirk.appspot.com]http://chirk.appspot.com[/url]。 但它没有默认的首页，于是打算放个“网站正在建设&#8230;”的说明页面上去。比较考究地选用limodou的uliweb框架。<br />
<span id="more-44"></span><br />
下面就一步步来，我在Windows下开发的。首先你得装Python，我的Windows XP装有Python2.5.2。接着装GAE的SDK，假设装在某分区 /Gae下。<br />
下载uliweb，解压到/Gae/下，将外面这个uliweb目录更名为您的GAE网站名，如我的是chirk，下同。进入刚更名的chirk目录，将app.yaml的第一行 application: uliweb 改为<br />
[color=#2E8B57]application: chirk[/color]<br />
在handlers:下面增加一个URL路由：<br />
[color=#2E8B57]- url: /static<br />
  static_dir: apps/consume/static[/color]<br />
在DOS下进入chirk目录，运行manage.py makeapp test，建立一个名叫test的应用。uliweb帮你生成了基本的代码，放在了chirk/apps/test下。将chirk/apps/settings.py中唯一的一行 INSTALLED_APPS = ['Example'] 改为<br />
[color=#2E8B57]INSTALLED_APPS = ['test'][/color]<br />
在chirk/apps/test/下建立一个目录static，再在static下建三个目录image css  js，以后将静态文件分类放在这里。在chirk/apps/test/templates下建一个模板文件 index.html，内容如下：</p>
<pre lang="bash" line="1"><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="UTF-8">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="stylesheet" rev="stylesheet" href="static/css/styles.css" type="text/css" media="all" />

<script type="text/javascript" src="static/js/jquery.js"></script>
</head>
<body>
<h1>{{=title}}</h1>
<div>{{=regard}}</div>

</body>
</html>
</pre>
<p>最后是重头戏，chirk/apps/test/views.py中的代码：</p>
<pre lang="bash" line="1">#!/bin/python
#-*- coding=utf-8 -*-
from frameworks.SimpleFrame import expose

@expose('/')
def index():
    title = "测试页面"
    regard = "欢迎来到我的网站，网站正在筹建中..."
    return locals()
</pre>
<p>最后是运行和上传，如果用uliweb的服务器，在DOS下进入/Gae/chirk/，运行mangae.py runserver，请在浏览器中打开http://localhost:8000，默认端口8000。如果用Gae的服务器，在DOS下进入/Gae/，运行dev_appserver.py chirk，默认的端口却是8080。上传到你的Gae空间：appcfg.py update chirk，然后按提示输入Gmail邮箱和密码即可。</p>


<p>No related posts.</p>
<p>以上关联文章由 <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a> 提供支持。</p>]]></content:encoded>
			<wfw:commentRss>http://blog.declab.com/web/2008/gae%e7%8e%af%e5%a2%83%e4%b8%8b%e7%ac%ac%e4%b8%80%e4%b8%aauliweb%e5%b0%8f%e7%a8%8b%e5%ba%8f%e5%bc%80%e5%8f%91/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Google开放注册GAE</title>
		<link>http://blog.declab.com/software/2008/google%e5%bc%80%e6%94%be%e6%b3%a8%e5%86%8cgae/</link>
		<comments>http://blog.declab.com/software/2008/google%e5%bc%80%e6%94%be%e6%b3%a8%e5%86%8cgae/#comments</comments>
		<pubDate>Thu, 29 May 2008 08:46:03 +0000</pubDate>
		<dc:creator>阿债</dc:creator>
				<category><![CDATA[软件使用介绍]]></category>
		<category><![CDATA[gae]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://rblog.declab.com/2008/1/google%e5%bc%80%e6%94%be%e6%b3%a8%e5%86%8cgae/</guid>
		<description><![CDATA[4月中旬，Google开放注册Google App Engine时，我没有赶上（才10K个名额）。今天看 [url=http://www.williamlong.info/archives/1357.html]月光博客[/url] 说Google把GAE放开了，就赶紧注册了一个，谁叫我对Python这么熟呢！[emot]grin[/emot] 注册时得填手机号码接收验证码，我填了一个，发现验证码是腾讯发出的。 手机号码要带国际区号，格式类似下面 +86 135******** 你的GAE网址是 http://****.appspot.com 不上传程序，什么都不会有，Google也没有提供默认首页 No related posts. 以上关联文章由 Yet Another Related Posts Plugin 提供支持。


No related posts.

以上关联文章由 <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a> 提供支持。]]></description>
			<content:encoded><![CDATA[<p>4月中旬，Google开放注册Google App Engine时，我没有赶上（才10K个名额）。今天看  [url=http://www.williamlong.info/archives/1357.html]月光博客[/url] 说Google把GAE放开了，就赶紧注册了一个，谁叫我对Python这么熟呢！[emot]grin[/emot]<br />
<span id="more-36"></span><br />
注册时得填手机号码接收验证码，我填了一个，发现验证码是腾讯发出的。<br />
手机号码要带国际区号，格式类似下面 +86 135********<br />
你的GAE网址是 http://****.appspot.com 不上传程序，什么都不会有，Google也没有提供默认首页</p>


<p>No related posts.</p>
<p>以上关联文章由 <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a> 提供支持。</p>]]></content:encoded>
			<wfw:commentRss>http://blog.declab.com/software/2008/google%e5%bc%80%e6%94%be%e6%b3%a8%e5%86%8cgae/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>根据机器有选择地加载配置文件（Python）</title>
		<link>http://blog.declab.com/web/2008/%e6%a0%b9%e6%8d%ae%e6%9c%ba%e5%99%a8%e6%9c%89%e9%80%89%e6%8b%a9%e5%9c%b0%e5%8a%a0%e8%bd%bd%e9%85%8d%e7%bd%ae%e6%96%87%e4%bb%b6%ef%bc%88python%ef%bc%89/</link>
		<comments>http://blog.declab.com/web/2008/%e6%a0%b9%e6%8d%ae%e6%9c%ba%e5%99%a8%e6%9c%89%e9%80%89%e6%8b%a9%e5%9c%b0%e5%8a%a0%e8%bd%bd%e9%85%8d%e7%bd%ae%e6%96%87%e4%bb%b6%ef%bc%88python%ef%bc%89/#comments</comments>
		<pubDate>Mon, 05 May 2008 11:31:37 +0000</pubDate>
		<dc:creator>阿债</dc:creator>
				<category><![CDATA[WEB开发]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[选择加载]]></category>
		<category><![CDATA[配置文件]]></category>

		<guid isPermaLink="false">http://rblog.declab.com/2008/1/%e6%a0%b9%e6%8d%ae%e6%9c%ba%e5%99%a8%e6%9c%89%e9%80%89%e6%8b%a9%e5%9c%b0%e5%8a%a0%e8%bd%bd%e9%85%8d%e7%bd%ae%e6%96%87%e4%bb%b6%ef%bc%88python%ef%bc%89/</guid>
		<description><![CDATA[同样的选择加载配置文件的问题，在Python下如何解决？ [quote]假设我们有三台机器：办公用的机器装Windows；局域网的测试机是Linux，机器名local-test；互联网上的服务器也是Linux。对应三个配置文件settings_win.py、settings_test.py、settings_remote.py。[/quote] 使用Python的os.environ。注意Windows下os.environ没有&#8217;HOSTNAME&#8217;。 import os if "Windows_NT" == os.environ.get("OS",""): from settings_win import * elif "local-test" == os.environ.get("HOSTNAME",""): from settings_test import * else: from settings_remote import * No related posts. 以上关联文章由 Yet Another Related Posts Plugin 提供支持。


No related posts.

以上关联文章由 <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a> 提供支持。]]></description>
			<content:encoded><![CDATA[<p>同样的选择加载配置文件的问题，在Python下如何解决？<br />
<span id="more-31"></span><br />
[quote]假设我们有三台机器：办公用的机器装Windows；局域网的测试机是Linux，机器名local-test；互联网上的服务器也是Linux。对应三个配置文件settings_win.py、settings_test.py、settings_remote.py。[/quote]<br />
使用Python的os.environ。注意Windows下os.environ没有&#8217;HOSTNAME&#8217;。</p>
<pre lang="python" line="1">
import os
if "Windows_NT" == os.environ.get("OS",""):
    from settings_win import *
elif "local-test" == os.environ.get("HOSTNAME",""):
    from settings_test import *
else:
    from settings_remote import *
</pre>


<p>No related posts.</p>
<p>以上关联文章由 <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a> 提供支持。</p>]]></content:encoded>
			<wfw:commentRss>http://blog.declab.com/web/2008/%e6%a0%b9%e6%8d%ae%e6%9c%ba%e5%99%a8%e6%9c%89%e9%80%89%e6%8b%a9%e5%9c%b0%e5%8a%a0%e8%bd%bd%e9%85%8d%e7%bd%ae%e6%96%87%e4%bb%b6%ef%bc%88python%ef%bc%89/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Web2Py的Model文件生成工具</title>
		<link>http://blog.declab.com/web/2008/web2py%e7%9a%84model%e6%96%87%e4%bb%b6%e7%94%9f%e6%88%90%e5%b7%a5%e5%85%b7/</link>
		<comments>http://blog.declab.com/web/2008/web2py%e7%9a%84model%e6%96%87%e4%bb%b6%e7%94%9f%e6%88%90%e5%b7%a5%e5%85%b7/#comments</comments>
		<pubDate>Fri, 11 Apr 2008 10:34:32 +0000</pubDate>
		<dc:creator>阿债</dc:creator>
				<category><![CDATA[WEB开发]]></category>
		<category><![CDATA[model]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[web2py]]></category>

		<guid isPermaLink="false">http://rblog.declab.com/2008/1/web2py%e7%9a%84model%e6%96%87%e4%bb%b6%e7%94%9f%e6%88%90%e5%b7%a5%e5%85%b7/</guid>
		<description><![CDATA[Web2Py也要写Model文件，把表结构描述写到py文件，我最不喜欢了。 咱是顶天立地的懒人，得要想个法子。昨晚写了个生成Model的python程序，凑合着用吧。 兄弟献丑了： 2008-04-11 Ver0.1 web2py_model_gen.tar.gz 其实前两天在Google Code里找来一个auto.py的文件，据说是根据创建表的SQL语句生成Web2Py的Model，试了一下没弄明白怎么用，惭愧！ 使用方法：先在MySQL客户端里用命令显示表结构，如表 account desc account; 将得到的数据复制到文件中，作为输入文件。修改程序中的表名、输入文件和输出文件。 运行程序，查看输出文件。 程序还有待改进，如输入文件全部放在指定目录，然后批量生成，以后再说吧。这个0.1版已经满足我现在的需要了。 No related posts. 以上关联文章由 Yet Another Related Posts Plugin 提供支持。


No related posts.

以上关联文章由 <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a> 提供支持。]]></description>
			<content:encoded><![CDATA[<p>Web2Py也要写Model文件，把表结构描述写到py文件，我最不喜欢了。<br />
咱是顶天立地的懒人，得要想个法子。昨晚写了个生成Model的python程序，凑合着用吧。<br />
<span id="more-20"></span><br />
兄弟献丑了： 2008-04-11 Ver0.1<br />
<a href='http://blog.declab.com/wp-content/uploads/2008/04/web2py_model_gen.tar.gz'>web2py_model_gen.tar.gz</a><br />
其实前两天在Google Code里找来一个auto.py的文件，据说是根据创建表的SQL语句生成Web2Py的Model，试了一下没弄明白怎么用，惭愧！</p>
<p>使用方法：先在MySQL客户端里用命令显示表结构，如表 account</p>
<pre lang="mysql" line="1">desc account;</pre>
<p>将得到的数据复制到文件中，作为输入文件。修改程序中的表名、输入文件和输出文件。<br />
运行程序，查看输出文件。</p>
<p>程序还有待改进，如输入文件全部放在指定目录，然后批量生成，以后再说吧。这个0.1版已经满足我现在的需要了。</p>


<p>No related posts.</p>
<p>以上关联文章由 <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a> 提供支持。</p>]]></content:encoded>
			<wfw:commentRss>http://blog.declab.com/web/2008/web2py%e7%9a%84model%e6%96%87%e4%bb%b6%e7%94%9f%e6%88%90%e5%b7%a5%e5%85%b7/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Python的框架web2py</title>
		<link>http://blog.declab.com/web/2008/python%e7%9a%84%e6%a1%86%e6%9e%b6web2py/</link>
		<comments>http://blog.declab.com/web/2008/python%e7%9a%84%e6%a1%86%e6%9e%b6web2py/#comments</comments>
		<pubDate>Tue, 08 Apr 2008 16:25:29 +0000</pubDate>
		<dc:creator>阿债</dc:creator>
				<category><![CDATA[WEB开发]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[web2py]]></category>

		<guid isPermaLink="false">http://rblog.declab.com/2008/1/python%e7%9a%84%e6%a1%86%e6%9e%b6web2py/</guid>
		<description><![CDATA[两周前，去看了一下limudou的博客，发现他最近关注一个新的Python框架web2py，开始我还误以为是webpy。 我跟着去web2py的主页看了一下，ORM很棒。不由得和拿它和Django做个比较。Django是非常Pythonic的，深得Python之父Guido van Rossum的赞赏。但也不是完美到一点毛病没有。 Django的ORM很强大，特别是对于多表关联，让程序员用起来很舒服。我就认为它比SqlAlchemy好，易用，又提供可以让你写自己的where条件的方法。但有人就说它的ORM效率低，据说稍微复杂一点的操作，它要生成的几十条SQL语句。另一个我无法忍受的是Django的模板，太单薄了，什么都得自定义Tag。内置的Tag连比较两个变量都没办法做，有它还不如没有它。 再看看web2py的ORM，由于之前受够了SqlAlchemy的绕来绕去，一见web2py，那感觉就是很爽很直接。在模板上，大概受了一类模板技术（如Savant，ZendFramework）的影响，模板逻辑上直接用Python语言，很原生态。 limudou翻译了web2py的文档，大家到这里看看 http://fy.py3k.cn/p/web2py/cookbook/cookbook.html。 No related posts. 以上关联文章由 Yet Another Related Posts Plugin 提供支持。


No related posts.

以上关联文章由 <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a> 提供支持。]]></description>
			<content:encoded><![CDATA[<p>两周前，去看了一下limudou的博客，发现他最近关注一个新的Python框架web2py，开始我还误以为是webpy。<br />
<span id="more-18"></span><br />
我跟着去web2py的主页看了一下，ORM很棒。不由得和拿它和Django做个比较。Django是非常Pythonic的，深得Python之父Guido van Rossum的赞赏。但也不是完美到一点毛病没有。<br />
Django的ORM很强大，特别是对于多表关联，让程序员用起来很舒服。我就认为它比SqlAlchemy好，易用，又提供可以让你写自己的where条件的方法。但有人就说它的ORM效率低，据说稍微复杂一点的操作，它要生成的几十条SQL语句。另一个我无法忍受的是Django的模板，太单薄了，什么都得自定义Tag。内置的Tag连比较两个变量都没办法做，有它还不如没有它。<br />
再看看web2py的ORM，由于之前受够了SqlAlchemy的绕来绕去，一见web2py，那感觉就是很爽很直接。在模板上，大概受了一类模板技术（如Savant，ZendFramework）的影响，模板逻辑上直接用Python语言，很原生态。<br />
limudou翻译了web2py的文档，大家到这里看看 http://fy.py3k.cn/p/web2py/cookbook/cookbook.html。</p>


<p>No related posts.</p>
<p>以上关联文章由 <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a> 提供支持。</p>]]></content:encoded>
			<wfw:commentRss>http://blog.declab.com/web/2008/python%e7%9a%84%e6%a1%86%e6%9e%b6web2py/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SQLAlchemy中的expression类型与None相等</title>
		<link>http://blog.declab.com/web/2008/sqlalchemy%e4%b8%ad%e7%9a%84expression%e7%b1%bb%e5%9e%8b%e4%b8%8enone%e7%9b%b8%e7%ad%89/</link>
		<comments>http://blog.declab.com/web/2008/sqlalchemy%e4%b8%ad%e7%9a%84expression%e7%b1%bb%e5%9e%8b%e4%b8%8enone%e7%9b%b8%e7%ad%89/#comments</comments>
		<pubDate>Wed, 02 Apr 2008 11:56:41 +0000</pubDate>
		<dc:creator>阿债</dc:creator>
				<category><![CDATA[WEB开发]]></category>
		<category><![CDATA[none]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[sqlalchemy]]></category>

		<guid isPermaLink="false">http://rblog.declab.com/2008/1/sqlalchemy%e4%b8%ad%e7%9a%84expression%e7%b1%bb%e5%9e%8b%e4%b8%8enone%e7%9b%b8%e7%ad%89/</guid>
		<description><![CDATA[在SQLAlchemy中，无论你要找的字段table.c.name，还是你的查询条件table.c.id==1，都是一个表达式expression。 但这里有一个陷阱，这些expression居然和None相等： None==expression 所以判断时，要使用绝对等于 expression is None （相当于其他语言的===） 其实Python中的普通表达式是不等于None的，不信你试试 1+2==None No related posts. 以上关联文章由 Yet Another Related Posts Plugin 提供支持。


No related posts.

以上关联文章由 <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a> 提供支持。]]></description>
			<content:encoded><![CDATA[<p>在SQLAlchemy中，无论你要找的字段table.c.name，还是你的查询条件table.c.id==1，都是一个表达式expression。<br />
但这里有一个陷阱，这些expression居然和None相等： None==expression<br />
<span id="more-16"></span><br />
所以判断时，要使用绝对等于 expression is None （相当于其他语言的===）<br />
其实Python中的普通表达式是不等于None的，不信你试试 1+2==None</p>


<p>No related posts.</p>
<p>以上关联文章由 <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a> 提供支持。</p>]]></content:encoded>
			<wfw:commentRss>http://blog.declab.com/web/2008/sqlalchemy%e4%b8%ad%e7%9a%84expression%e7%b1%bb%e5%9e%8b%e4%b8%8enone%e7%9b%b8%e7%ad%89/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Python 调用超类初始化方法的困惑</title>
		<link>http://blog.declab.com/web/2008/python-%e8%b0%83%e7%94%a8%e8%b6%85%e7%b1%bb%e5%88%9d%e5%a7%8b%e5%8c%96%e6%96%b9%e6%b3%95%e7%9a%84%e5%9b%b0%e6%83%91/</link>
		<comments>http://blog.declab.com/web/2008/python-%e8%b0%83%e7%94%a8%e8%b6%85%e7%b1%bb%e5%88%9d%e5%a7%8b%e5%8c%96%e6%96%b9%e6%b3%95%e7%9a%84%e5%9b%b0%e6%83%91/#comments</comments>
		<pubDate>Wed, 02 Apr 2008 11:54:33 +0000</pubDate>
		<dc:creator>阿债</dc:creator>
				<category><![CDATA[WEB开发]]></category>
		<category><![CDATA[class]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[super]]></category>

		<guid isPermaLink="false">http://rblog.declab.com/2008/1/python-%e8%b0%83%e7%94%a8%e8%b6%85%e7%b1%bb%e5%88%9d%e5%a7%8b%e5%8c%96%e6%96%b9%e6%b3%95%e7%9a%84%e5%9b%b0%e6%83%91/</guid>
		<description><![CDATA[Python中调用超类方法和其余语言迥然不同，如果子类SubClass要调用超类SuperClass的方法foo()，应该是 class SubClass(SuperClass): def foo(self): super(SubClass, self).foo() #我没有写错，第一个参数是SubClass 其实在Python2.2版之前的是这么写的 class SubClass(SuperClass): def foo(self): SuperClass.foo(self) 之所以要改版，就是为了解决多重继承中的“钻石形状问题”： B(A), C(A), D(B), D(C)，具体中间出了什么问题偶也不清楚。 但这个新式写法，本来用得好好的，昨天居然出问题了。 class SubClass(SuperClass): def __init__(self): super(SubClass, self).__init__() 在Linux下报错： TypeError: super() argument 1 must be type, not classobj 我傻了，以为自己记错了，到网上一艘，是这么写的没错。 那什么会报错呢？我在这里找到了解决方法： oddness in super() 解决方法是SuperClass只要有一个超类的是object 就是 class SuperClass(object): pass 或者 class SuperClass(GrandClass, object): pass No related posts. 以上关联文章由 [...]


No related posts.

以上关联文章由 <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a> 提供支持。]]></description>
			<content:encoded><![CDATA[<p>Python中调用超类方法和其余语言迥然不同，如果子类SubClass要调用超类SuperClass的方法foo()，应该是<br />
<span id="more-15"></span><br />
class SubClass(SuperClass):<br />
       def foo(self):<br />
            super(SubClass, self).foo() #我没有写错，第一个参数是SubClass</p>
<p>其实在Python2.2版之前的是这么写的<br />
class SubClass(SuperClass):<br />
       def foo(self):<br />
            SuperClass.foo(self)<br />
之所以要改版，就是为了解决多重继承中的“钻石形状问题”： B(A), C(A), D(B), D(C)，具体中间出了什么问题偶也不清楚。</p>
<p>但这个新式写法，本来用得好好的，昨天居然出问题了。<br />
class SubClass(SuperClass):<br />
       def __init__(self):<br />
            super(SubClass, self).__init__()<br />
在Linux下报错： TypeError: super() argument 1 must be type, not classobj<br />
我傻了，以为自己记错了，到网上一艘，是这么写的没错。</p>
<p>那什么会报错呢？我在这里找到了解决方法： oddness in super()<br />
解决方法是SuperClass只要有一个超类的是object<br />
就是 class SuperClass(object): pass<br />
或者 class SuperClass(GrandClass, object): pass</p>


<p>No related posts.</p>
<p>以上关联文章由 <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a> 提供支持。</p>]]></content:encoded>
			<wfw:commentRss>http://blog.declab.com/web/2008/python-%e8%b0%83%e7%94%a8%e8%b6%85%e7%b1%bb%e5%88%9d%e5%a7%8b%e5%8c%96%e6%96%b9%e6%b3%95%e7%9a%84%e5%9b%b0%e6%83%91/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Python的Tuple，Dict参数解包示例</title>
		<link>http://blog.declab.com/web/2008/python%e7%9a%84tuple%ef%bc%8cdict%e5%8f%82%e6%95%b0%e8%a7%a3%e5%8c%85%e7%a4%ba%e4%be%8b/</link>
		<comments>http://blog.declab.com/web/2008/python%e7%9a%84tuple%ef%bc%8cdict%e5%8f%82%e6%95%b0%e8%a7%a3%e5%8c%85%e7%a4%ba%e4%be%8b/#comments</comments>
		<pubDate>Wed, 02 Apr 2008 11:47:28 +0000</pubDate>
		<dc:creator>阿债</dc:creator>
				<category><![CDATA[WEB开发]]></category>
		<category><![CDATA[dict]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[tuple]]></category>
		<category><![CDATA[参数]]></category>
		<category><![CDATA[解包]]></category>

		<guid isPermaLink="false">http://rblog.declab.com/2008/1/python%e7%9a%84tuple%ef%bc%8cdict%e5%8f%82%e6%95%b0%e8%a7%a3%e5%8c%85%e7%a4%ba%e4%be%8b/</guid>
		<description><![CDATA[有个函数（方法），用于格式化日期： def format_date(year, month, day): year = int(year) if year


No related posts.

以上关联文章由 <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a> 提供支持。]]></description>
			<content:encoded><![CDATA[<p><span id="more-14"></span><br />
有个函数（方法），用于格式化日期：</p>
<pre lang="bash" line="1">def format_date(year, month, day):
       year = int(year)
       if year<=30:
              format = "20%02d-%02d-%02d"
       elif 30<year<100:
              format = "19%02d-%02d-%02d"
       else:
              format = "%d-%02d-%02d"
       return format % (year, month, day)</pre>
<p>下面两种方式大家都会了：</p>
<pre lang="bash" line="1">#Tuple参数
a = (7, 9, 27)
print format_date(*a)

#Dict参数
b = {'month':9, 'day':27, 'year':7}
print format_date(**b)</pre>
<p>但上面的format_date()函数存在一个问题，它没有充分检查参数的合法性，如果参数中有负数或浮点数，就得不到预期的结果。那我要求在传参数之前，先将参数转化为正整数或0，该怎么传参数？<br />
以 b = {'month':9, 'day':27, 'year':7} 为例：</p>
<pre lang="bash" line="1">print format_date( *[ k=abs(int(v)) for k,v in b.items() ] )</pre>


<p>No related posts.</p>
<p>以上关联文章由 <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a> 提供支持。</p>]]></content:encoded>
			<wfw:commentRss>http://blog.declab.com/web/2008/python%e7%9a%84tuple%ef%bc%8cdict%e5%8f%82%e6%95%b0%e8%a7%a3%e5%8c%85%e7%a4%ba%e4%be%8b/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Python删除整个目录</title>
		<link>http://blog.declab.com/web/2008/python%e5%88%a0%e9%99%a4%e6%95%b4%e4%b8%aa%e7%9b%ae%e5%bd%95/</link>
		<comments>http://blog.declab.com/web/2008/python%e5%88%a0%e9%99%a4%e6%95%b4%e4%b8%aa%e7%9b%ae%e5%bd%95/#comments</comments>
		<pubDate>Mon, 31 Mar 2008 18:11:56 +0000</pubDate>
		<dc:creator>阿债</dc:creator>
				<category><![CDATA[WEB开发]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[删除]]></category>
		<category><![CDATA[目录]]></category>

		<guid isPermaLink="false">http://rblog.declab.com/2008/1/python%e5%88%a0%e9%99%a4%e6%95%b4%e4%b8%aa%e7%9b%ae%e5%bd%95/</guid>
		<description><![CDATA[如果想删除某个目录及其下面的所有目录和文件，可以用如下方法。 def removeall(dir_file): """ 删除dir_file文件，或删除dir_file目录及其下面的所有目录和文件 """ import os if not os.path.exist(dir_file): return #文件或目录dir_file不存在 if os.path.isdir(dir_file): #dir_file是一个目录 for root, dirs, files in os.walk(dir_file, topdown=False): for name in files: os.remove(os.path.join(root, name)) for name in dirs: os.rmdir(os.path.join(root, name)) os.rmdir(dir_file) #把目录dir_file也删除 else: os.unlink(dir_file) #把文件dir_file删除 return No related posts. 以上关联文章由 Yet Another Related Posts Plugin 提供支持。


No related posts.

以上关联文章由 <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a> 提供支持。]]></description>
			<content:encoded><![CDATA[<p>如果想删除某个目录及其下面的所有目录和文件，可以用如下方法。<br />
<span id="more-11"></span></p>
<pre lang="bash" line="1">def removeall(dir_file):
    """
    删除dir_file文件，或删除dir_file目录及其下面的所有目录和文件
    """
    import os
    if not os.path.exist(dir_file):
        return #文件或目录dir_file不存在
    if os.path.isdir(dir_file): #dir_file是一个目录
        for root, dirs, files in os.walk(dir_file, topdown=False):
            for name in files:
                os.remove(os.path.join(root, name))
            for name in dirs:
                os.rmdir(os.path.join(root, name))
        os.rmdir(dir_file) #把目录dir_file也删除
    else:
        os.unlink(dir_file)    #把文件dir_file删除
    return</pre>


<p>No related posts.</p>
<p>以上关联文章由 <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a> 提供支持。</p>]]></content:encoded>
			<wfw:commentRss>http://blog.declab.com/web/2008/python%e5%88%a0%e9%99%a4%e6%95%b4%e4%b8%aa%e7%9b%ae%e5%bd%95/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Twisted的日志功能</title>
		<link>http://blog.declab.com/web/2008/twisted%e7%9a%84%e6%97%a5%e5%bf%97%e5%8a%9f%e8%83%bd/</link>
		<comments>http://blog.declab.com/web/2008/twisted%e7%9a%84%e6%97%a5%e5%bf%97%e5%8a%9f%e8%83%bd/#comments</comments>
		<pubDate>Mon, 31 Mar 2008 18:09:18 +0000</pubDate>
		<dc:creator>阿债</dc:creator>
				<category><![CDATA[WEB开发]]></category>
		<category><![CDATA[log]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[twisted]]></category>

		<guid isPermaLink="false">http://rblog.declab.com/2008/1/twisted%e7%9a%84%e6%97%a5%e5%bf%97%e5%8a%9f%e8%83%bd/</guid>
		<description><![CDATA[我的Python需要一段代码记录日志，要把我程序中的print输出和异常输出都记下来；还要自动按天存放，一天一个日志文件，文件名要含有日期。 那么下面是你想要的，用到了Twisted框架： ### dailylog.py from twisted.python import log, logfileLOG_DIR = '/var/run/logs/' VERBOSE = Truef = logfile.DailyLogFile("log", logdir) log.startLogging(f) ### use.py from dailylog import log, VERBOSE def main() : a = "Hello World!" if VERBOSE: log.msg( "a is "+str(a) ) if __name__ == '__main__': main() Related posts:地铁上想到的一个关于日期的问题 昨天在地铁上，突然想到当天是21号，星期一。打开手机看了一下，2001年1月1号正好是星期一。 于是就有一个有趣的问题：那么21世纪中(2001-2100)，每个月的1号，同时又是星期一的日子大约有多少天： A. 50 B. 150 C. 350 D. [...]


Related posts:<ol><li><a href='http://blog.declab.com/web/2009/144/' rel='bookmark' title='Permanent Link: 地铁上想到的一个关于日期的问题'>地铁上想到的一个关于日期的问题</a> <small>昨天在地铁上，突然想到当天是21号，星期一。打开手机看了一下，2001年1月1号正好是星期一。 于是就有一个有趣的问题：那么21世纪中(2001-2100)，每个月的1号，同时又是星期一的日子大约有多少天： A. 50 B. 150 C. 350 D. 550...</small></li>
</ol>

以上关联文章由 <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a> 提供支持。]]></description>
			<content:encoded><![CDATA[<p>我的Python需要一段代码记录日志，要把我程序中的print输出和异常输出都记下来；还要自动按天存放，一天一个日志文件，文件名要含有日期。<br />
<span id="more-10"></span><br />
那么下面是你想要的，用到了Twisted框架：</p>
<pre lang="bash" line="1">### dailylog.py
from twisted.python import log, logfileLOG_DIR = '/var/run/logs/'
VERBOSE = Truef = logfile.DailyLogFile("log", logdir)
log.startLogging(f)
### use.py
from dailylog import log, VERBOSE

def main() :
    a = "Hello World!"
    if VERBOSE:
        log.msg( "a is "+str(a) )

if __name__ == '__main__':
    main()</pre>


<p>Related posts:<ol><li><a href='http://blog.declab.com/web/2009/144/' rel='bookmark' title='Permanent Link: 地铁上想到的一个关于日期的问题'>地铁上想到的一个关于日期的问题</a> <small>昨天在地铁上，突然想到当天是21号，星期一。打开手机看了一下，2001年1月1号正好是星期一。 于是就有一个有趣的问题：那么21世纪中(2001-2100)，每个月的1号，同时又是星期一的日子大约有多少天： A. 50 B. 150 C. 350 D. 550...</small></li>
</ol></p>
<p>以上关联文章由 <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a> 提供支持。</p>]]></content:encoded>
			<wfw:commentRss>http://blog.declab.com/web/2008/twisted%e7%9a%84%e6%97%a5%e5%bf%97%e5%8a%9f%e8%83%bd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
