Python论坛  - 讨论区

标题:[python-chinese] 问一个异常类的实现问题

2005年06月01日 星期三 19:49

泰传 温 wendwghit at yahoo.com.cn
Wed Jun 1 19:49:17 HKT 2005

请问那里有异常类的实现代码,其功能就象下面这样,

raise 类名,“显示串”

我在很多代码中看到了类似下面的代码,感觉很好用,所以想学学,谢谢

raise TypeError, "%s is not a MutableTree instance." % repr(tree)



---------------------------------
Do You Yahoo!?
150万曲MP3疯狂搜,带您闯入音乐殿堂
美女明星应有尽有,搜遍美图、艳图和酷图
1G就是1000兆,雅虎电邮自助扩容!
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20050601/9f8f1512/attachment.html

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年06月01日 星期三 21:31

Qiangning Hong hongqn at gmail.com
Wed Jun 1 21:31:43 HKT 2005

Python Tutorial 第8节:Errors and Exceptions.
8.5 User-defined Exceptions.
http://docs.python.org/tut/node10.html

On 6/1/05, 泰传 温 <wendwghit at yahoo.com.cn> wrote:
> 
> 
> 请问那里有异常类的实现代码,其功能就象下面这样, 
> 
> raise 类名,"显示串" 
> 
> 我在很多代码中看到了类似下面的代码,感觉很好用,所以想学学,谢谢 
> 
> raise TypeError, "%s is not a MutableTree instance." % repr(tree)
> 
> 
> ________________________________
Do You Yahoo!?
>  150万曲MP3疯狂搜,带您闯入音乐殿堂
> 美女明星应有尽有,搜遍美图、艳图和酷图
>  1G就是1000兆,雅虎电邮自助扩容! 
> 
> 
> _______________________________________________
> python-chinese list
> python-chinese at lists.python.cn
> http://python.cn/mailman/listinfo/python-chinese
> 
> 
> 



-- 
Qiangning Hong
Get Firefox! <http://www.spreadfirefox.com/?q=affiliates&id=67907&t=1>

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年06月01日 星期三 23:53

Jason Liu telecomliu at gmail.com
Wed Jun 1 23:53:24 HKT 2005

不需要看实现代码吧。
raise TypeError, "%s is not a MutableTree instance." % repr(tree)
TypeError是一个异常class,一般从Exception派生。常见的定义方式是
class MyError(Exception):pass
"%s is not a MutableTree instance." % repr(tree)是个字符串。

在 05-6-1,泰传 温<wendwghit at yahoo.com.cn> 写道:
> 
> 
> 请问那里有异常类的实现代码,其功能就象下面这样,
> 
> raise 类名,"显示串"
> 
> 我在很多代码中看到了类似下面的代码,感觉很好用,所以想学学,谢谢
> 
> raise TypeError, "%s is not a MutableTree instance." % repr(tree)
> 
> 
> ________________________________
> Do You Yahoo!?
> 150万曲MP3疯狂搜,带您闯入音乐殿堂
> 美女明星应有尽有,搜遍美图、艳图和酷图
> 1G就是1000兆,雅虎电邮自助扩容! 
> 
> 
> _______________________________________________
> python-chinese list
> python-chinese at lists.python.cn
> http://python.cn/mailman/listinfo/python-chinese
> 
> 
>

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年06月02日 星期四 12:38

泰传 温 wendwghit at yahoo.com.cn
Thu Jun 2 12:38:43 HKT 2005

只是有点纳闷?
注意:
class MyError(Exception):
     pass
 
raise MyError, "Bug"
显示MyError: Bug
 
但是,注意到没有,在类定义class MyError中,我没有定义__init__方法,而且也没有调用Exception.__init__,所以python 不会调用Exception.__init__方法,怎么会显示Bug这个字符串呢?
 
raise instance
或 raise instance.__class__, instance
 
在raise MyError, "Bug"中, 难道"Bug" 串是class MyEror的一个实例?

Jason Liu <telecomliu at gmail.com> 写道:
不需要看实现代码吧。
raise TypeError, "%s is not a MutableTree instance." % repr(tree)
TypeError是一个异常class,一般从Exception派生。常见的定义方式是
class MyError(Exception):pass
"%s is not a MutableTree instance." % repr(tree)是个字符串。

在 05-6-1,泰传 温 写道:
> 
> 
> 请问那里有异常类的实现代码,其功能就象下面这样,
> 
> raise 类名,"显示串"
> 
> 我在很多代码中看到了类似下面的代码,感觉很好用,所以想学学,谢谢
> 
> raise TypeError, "%s is not a MutableTree instance." % repr(tree)
> 
> 
> ________________________________
> Do You Yahoo!?
> 150万曲MP3疯狂搜,带您闯入音乐殿堂
> 美女明星应有尽有,搜遍美图、艳图和酷图
> 1G就是1000兆,雅虎电邮自助扩容! 
> 
> 
> _______________________________________________
> python-chinese list
> python-chinese at lists.python.cn
> http://python.cn/mailman/listinfo/python-chinese
> 
> 
>
_______________________________________________
python-chinese list
python-chinese at lists.python.cn
http://python.cn/mailman/listinfo/python-chinese

		
---------------------------------
DO YOU YAHOO!?
  雅虎免费G邮箱-中国第一绝无垃圾邮件骚扰超大邮箱 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20050602/9da76653/attachment.html

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年06月02日 星期四 13:53

Qiangning Hong hongqn at gmail.com
Thu Jun 2 13:53:33 HKT 2005

子类没有定义__init__方法,创建实例时会自动调用父类的__init__方法。这就是类的继承。

On 6/2/05, 泰传 温 <wendwghit at yahoo.com.cn> wrote:
> 只是有点纳闷? 
> 注意: 
> class MyError(Exception): 
>      pass 
>   
> raise MyError, "Bug" 
> 显示MyError: Bug 
>   
> 但是,注意到没有,在类定义class
> MyError中,我没有定义__init__方法,而且也没有调用Exception.__init__,所以python
> 不会调用Exception.__init__方法,怎么会显示Bug这个字符串呢? 
>   
> raise instance 
> 或 raise instance.__class__, instance 
>   
> 在raise MyError, "Bug"中, 难道"Bug" 串是class MyEror的一个实例?
> 
> Jason Liu <telecomliu at gmail.com> 写道: 
> 不需要看实现代码吧。
> raise TypeError, "%s is not a MutableTree instance." % repr(tree)
> TypeError是一个异常class,一般从Exception派生。常见的定义方式是
> class MyError(Exception):pass
> "%s is not a MutableTree instance." % repr(tree)是个字符串。
> 
> 在 05-6-1,泰传 温 写道:
> > 
> > 
> > 请问那里有异常类的实现代码,其功能就象下面这样,
> > 
> > raise 类名,"显示串"
> > 
> > 我在很多代码中看到了类似下面的代码,感觉很好用,所以想学学,谢谢
> > 
> > raise TypeError, "%s is not a MutableTree instance." % repr(tree)
> > 
> > 
> > ________________________________
> > Do You Yahoo!?
> > 150万曲MP3疯狂搜,带您闯入音乐殿堂
> > 美女明星应有尽有,搜遍美图、艳图和酷图
> > 1G就是1000兆,雅虎电邮自助扩容! 
> > 
> > 
> > _______________________________________________
> > python-chinese list
> > python-chinese at lists.python.cn
> > http://python.cn/mailman/listinfo/python-chinese
> > 
> > 
> >
> _______________________________________________
> python-chinese list
> python-chinese at lists.python.cn
> http://python.cn/mailman/listinfo/python-chinese
> 
> 
>  ________________________________
> DO YOU YAHOO!?
>  雅虎免费G邮箱-中国第一绝无垃圾邮件骚扰超大邮箱 
> 
> 
> _______________________________________________
> python-chinese list
> python-chinese at lists.python.cn
> http://python.cn/mailman/listinfo/python-chinese
> 
> 
> 


-- 
Qiangning Hong
Get Firefox! <http://www.spreadfirefox.com/?q=affiliates&id=67907&t=1>

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年06月02日 星期四 18:20

泰传 温 wendwghit at yahoo.com.cn
Thu Jun 2 18:20:29 HKT 2005

谢谢,收到了
>>> class A:
 def __init__(self, st):
  print st
  
>>> class B(A):
 pass
>>> raise B, "Bug"
Bug
的确是自动调用父类的__init__

Qiangning Hong <hongqn at gmail.com> 写道:
子类没有定义__init__方法,创建实例时会自动调用父类的__init__方法。这就是类的继承。

On 6/2/05, 泰传 温 wrote:
> 只是有点纳闷? 
> 注意: 
> class MyError(Exception): 
> pass 
> 
> raise MyError, "Bug" 
> 显示MyError: Bug 
> 
> 但是,注意到没有,在类定义class
> MyError中,我没有定义__init__方法,而且也没有调用Exception.__init__,所以python
> 不会调用Exception.__init__方法,怎么会显示Bug这个字符串呢? 
> 
> raise instance 
> 或 raise instance.__class__, instance 
> 
> 在raise MyError, "Bug"中, 难道"Bug" 串是class MyEror的一个实例?
> 
> Jason Liu 写道: 
> 不需要看实现代码吧。
> raise TypeError, "%s is not a MutableTree instance." % repr(tree)
> TypeError是一个异常class,一般从Exception派生。常见的定义方式是
> class MyError(Exception):pass
> "%s is not a MutableTree instance." % repr(tree)是个字符串。
> 
> 在 05-6-1,泰传 温 写道:
> > 
> > 
> > 请问那里有异常类的实现代码,其功能就象下面这样,
> > 
> > raise 类名,"显示串"
> > 
> > 我在很多代码中看到了类似下面的代码,感觉很好用,所以想学学,谢谢
> > 
> > raise TypeError, "%s is not a MutableTree instance." % repr(tree)
> > 
> > 
> > ________________________________
> > Do You Yahoo!?
> > 150万曲MP3疯狂搜,带您闯入音乐殿堂
> > 美女明星应有尽有,搜遍美图、艳图和酷图
> > 1G就是1000兆,雅虎电邮自助扩容! 
> > 
> > 
> > _______________________________________________
> > python-chinese list
> > python-chinese at lists.python.cn
> > http://python.cn/mailman/listinfo/python-chinese
> > 
> > 
> >
> _______________________________________________
> python-chinese list
> python-chinese at lists.python.cn
> http://python.cn/mailman/listinfo/python-chinese
> 
> 
> ________________________________
> DO YOU YAHOO!?
> 雅虎免费G邮箱-中国第一绝无垃圾邮件骚扰超大邮箱 
> 
> 
> _______________________________________________
> python-chinese list
> python-chinese at lists.python.cn
> http://python.cn/mailman/listinfo/python-chinese
> 
> 
> 


-- 
Qiangning Hong
Get Firefox! 
_______________________________________________
python-chinese list
python-chinese at lists.python.cn
http://python.cn/mailman/listinfo/python-chinese

		
---------------------------------
DO YOU YAHOO!?
  雅虎免费G邮箱-中国最强免费防毒反垃圾超大邮箱 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20050602/41860b70/attachment.html

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年06月03日 星期五 16:25

Neo Chan (netkiller) neo.chen at achievo.com
Fri Jun 3 16:25:45 HKT 2005

Python Unicode 有问题。
UNICODE 一个字母,和一个汉字,长度是相等的,Python 却把汉字当成两个字母。


[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年06月03日 星期五 16:46

Qiangning Hong hongqn at gmail.com
Fri Jun 3 16:46:01 HKT 2005

Neo Chan (netkiller) wrote:
> Python Unicode 有问题。
> UNICODE 一个字母,和一个汉字,长度是相等的,Python 却把汉字当成两个字母。

你是说 len("汉") == 2 吧?

这是因为你在输入“汉”这个汉字的时候,用的是GB2312编码,对于python而言,它
看见的是0xba 0xba两个字节。python本身并不知道你输入的是汉字还是日文还是
什么别的,它是按两个字节来处理这个string,取len自然为2。

好比我现在的控制台下的编码为UTF-8,我输入len("汉")就会返回3。因为“汉”的
UTF-8编码是0xe6 0xb1 0x89。

unicode则不一样,它不是字节序列,而是*字符*序列。“汉”这个字的unicode编号是
U+6C49,在python里它是作为一个整体来处理的。因此取len为1。

再次强调一遍,string对象是字节序列,unicode对象才是字符序列。建议你翻翻
以前的archive,有一阵有集中的关于汉字编码和unicode的讨论。

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2025

    京ICP备05028076号