Python 为什么要加 self
[ 2012/01/17 16:09 | by selboo ]
刚刚接触Python以来,看到类里的函数要带个self参数,一直搞不懂啥原因。晚上搜索下
Python要self的理由
Python的类的方法和普通的函数有一个很明显的区别,在类的方法必须有个额外的第一个参数(self),但在调用这个方法的时候不必为这个参数赋值 (显胜于隐 的引发)。Python的类的方法的这个特别的参数指代的是对象本身,而按照Python的惯例,它用self来表示。(当然我们也可以用其他任何名称来代替,只是规范和标准在那建议我们一致使用self)
为何Python给self赋值而你不必给self赋值?
例子说明:创建了一个类MyClass,实例化MyClass得到了MyObject这个对象,然后调用这个对象的方法MyObject.method(arg1,arg2) ,这个过程中,Python会自动转为[color=#0000FF]M
Python要self的理由
Python的类的方法和普通的函数有一个很明显的区别,在类的方法必须有个额外的第一个参数(self),但在调用这个方法的时候不必为这个参数赋值 (显胜于隐 的引发)。Python的类的方法的这个特别的参数指代的是对象本身,而按照Python的惯例,它用self来表示。(当然我们也可以用其他任何名称来代替,只是规范和标准在那建议我们一致使用self)
为何Python给self赋值而你不必给self赋值?
例子说明:创建了一个类MyClass,实例化MyClass得到了MyObject这个对象,然后调用这个对象的方法MyObject.method(arg1,arg2) ,这个过程中,Python会自动转为[color=#0000FF]M
其实我们接触的第一个C语言函数 int printf(const char *format, ...);就是可变长参数实现的。open函数就有两个原型 int open(const char *pathname, int flags); int open(const char *pathname, int flags, mode_t mode);
但是这并不是函数重载,因为C语言是不支持函数重载的。这是利用变长参数实现的。
#include <stdio.h>
int main ()
{
int a = 1, b = 2;
printf ("Selboo...\n");
}
[root@selboo.com.cn ~]$ gcc c.c
[root@selboo.com.cn ~]$ ./a.out
Selboo...
上面 printf 就是可变长参数,它的原型声明 在 stdio.h 里面可以找到.
但是这并不是函数重载,因为C语言是不支持函数重载的。这是利用变长参数实现的。
This is The C Code
[root@selboo.com.cn ~]$ cat c.c #include <stdio.h>
int main ()
{
int a = 1, b = 2;
printf ("Selboo...\n");
}
[root@selboo.com.cn ~]$ gcc c.c
[root@selboo.com.cn ~]$ ./a.out
Selboo...
Parsed in 0.006 seconds at 31.47 KB/s
上面 printf 就是可变长参数,它的原型声明 在 stdio.h 里面可以找到.
PHP关闭浏览器后仍然继续执行的函数
[ 2011/06/07 17:52 | by selboo ]
函数名称:ignore_user_abort
官方说明:http://cn2.php.net/manual/en/function.ignore-user-abort.php
使用方法:
即使Client断开(如关掉浏览器),PHP脚本也可以继续执行.
这样就可以实现计划任务效果了.但是还是要客户端访问程序才行.
比如说在生成静态页面、采集的时候,不需要在等待了。关掉浏览器吧。
例子:
官方说明:http://cn2.php.net/manual/en/function.ignore-user-abort.php
使用方法:
即使Client断开(如关掉浏览器),PHP脚本也可以继续执行.
ignore_user_abort(true);
这样就可以实现计划任务效果了.但是还是要客户端访问程序才行.
比如说在生成静态页面、采集的时候,不需要在等待了。关掉浏览器吧。
例子:
set_time_limit(0);
ignore_user_abort(true);
$i = 0 ;
while($i ++ < 200){
file_put_contents($i.'.php' , $i);
sleep(3);
}
ignore_user_abort(true);
$i = 0 ;
while($i ++ < 200){
file_put_contents($i.'.php' , $i);
sleep(3);
}
几个有用的php字符串过滤,转换函数
[ 2010/12/25 17:18 | by selboo ]
nl2br();// \n to
addslashes(); stripslashes();//对数据库操作时,转义特殊字符
chop();//除去字符串右边空格
trim();//除去字符串中所有空格
ltrim();//除去字符串左边空格
htmlspecialchars();//转换'$','"','<','>'为相应的html实体
htmlentities();//转换所有html标记为相应的html实体
array explode(string separator, string str);//分割字符串
string implode(string separator, array arr);//连接字符串
strtoupper(); strtolower();//转换大小写
ucfirst();//只转换第一个字符为大写
ucwords();//转换每个words的第一个字母为大写
123
addslashes(); stripslashes();//对数据库操作时,转义特殊字符
chop();//除去字符串右边空格
trim();//除去字符串中所有空格
ltrim();//除去字符串左边空格
htmlspecialchars();//转换'$','"','<','>'为相应的html实体
htmlentities();//转换所有html标记为相应的html实体
array explode(string separator, string str);//分割字符串
string implode(string separator, array arr);//连接字符串
strtoupper(); strtolower();//转换大小写
ucfirst();//只转换第一个字符为大写
ucwords();//转换每个words的第一个字母为大写
123
php获取某个目录大小
[ 2010/10/22 12:32 | by selboo ]
算文件夹大小的函数:
[code]function countDirSize($dir)
{
$handle = opendir($dir);
while (false!==($FolderOrFile = readdir($handle)))
{
if($FolderOrFile != "." && $FolderOrFile != "..")
{
if(is_dir("$dir/$FolderOrFile")) {
$sizeResult += getDirSize("$dir/$FolderOrFile");
} else {
$sizeResult += filesize("$dir/$FolderOrFile");
}
}
}
closedir($handle);
return $sizeResult;<