我正在读一本电子书,这是我的代码:
import math
class QuadError( Exception ):
pass
def quad(a,b,c):
if a == 0:
ex = QuadError( "Not Quadratic" )
ex.coef = ( a, b, c )
raise ex
if b*b-4*a*c < 0:
ex = QuadError( "No Real Roots" )
ex.coef = ( a, b, c )
raise ex
x1= (-b+math.sqrt(b*b-4*a*c))/(2*a)
x2= (-b-math.sqrt(b*b-4*a*c))/(2*a)
return (x1,x2)虽然我理解尝试..。除了函数里面的东西,我不明白.我理解它的作用,例如我使用了四(4,2,4)给我一个“没有真实根”的错误,或者四(0,b,c)但是我无法理解程序本身是如何工作的…所以,
if a == 0:名为"ex“的变量获取值: QuadError(”非二次“),因此程序搜索包含pass命令的类QuadError?!那为什么要打印这条信息?我希望像..。
class QuadError( Exception ):
print Exception接下来我要说的是台词:
ex.coef = ( a, b, c )那是什么?coef是命令吗?它能起什么作用吗?
谢谢各位!)
发布于 2015-01-29 19:17:23
下面是从Exception派生的类的定义,也称为它的子类。它的主体是空的(它没有向基类添加新的行为或属性),所以使用pass语句是因为类主体必须在其中包含一些东西。
class QuadError(Exception):
pass在守则的这一部分:
ex = QuadError( "Not Quadratic" )
ex.coef = ( a, b, c )
raise ex它正在创建一个新类的实例,并向它传递一个字符串,该字符串将成为异常的message属性,并在打印异常时显示。ex.coef赋值添加该名称的属性,该属性的值与系数值为元组。这本身并不十分有用,但是其他代码可以尝试访问添加的属性并以某种方式使用这些值。但是,在代码中没有这样做的例子。
在我的选项中,最好将系数值添加到异常消息本身,以便将它们与一个一起打印。
这就是我的意思:
a, b, c = 0, 1, 2
try:
ex = QuadError("Not Quadratic: coefficients a:{} b:{} c:{}".format(a,b,c))
raise ex
except QuadError as qe:
print(qe)输出:
Not Quadratic: coefficients a:0 b:1 c:2https://stackoverflow.com/questions/28221946
复制相似问题