【发布时间】:2018-01-23 23:31:19
【问题描述】:
考虑一个用于表示圆形对象的 Circle 类。 Circle 类的实例将具有一个名为 radius 的属性,该属性指示圆的大小。此类的构造方法(例如 init)将照常初始化此属性。
显然,Circle 对象的大小小于或等于 0 是没有意义的。
如果有人试图创建一个半径为负数或零的 Circle 对象,那么您应该引发 ValueError 类型的异常。应使用以下字符串创建 ValueError 对象:
半径不能小于等于0
此外,如果有人试图创建具有非整数值半径的 Circle 对象,那么您应该引发 TypeError 类型的异常。应使用以下字符串创建 ValueError 对象:
半径必须是整数值
使用构造方法定义一个 Circle 类,以防止使用无效半径创建 Circle 对象。此类的 repr 和 str 函数应返回以下字符串:
圆(x)
其中 x 是圆的半径。
例如:
def main():
try:
c = Circle(10)
except ValueError as x:
print("Error: " + str(x))
else:
print(c)
def __init__(self, x):
try:
if x <= 0:
raise ValueError('Radius must not be less than or equal to 0')
elif x != int or x != float:
raise TypeError('Radius must be an integer value')
except ValueError as x:
print('Error: {0}'.format(x))
except TypeError as x:
print('Error: {0}'.format(x))
main()
结果应该是:
Circle(10)
如果 c = Circle(-100),结果应该是:
Error: Radius must not be less than or equal to 0
但是,“def init(self, x)”部分不正确。 有人可以帮忙吗?! 谢谢!
【问题讨论】:
-
您似乎在任何地方都没有 Circle 类。
标签: python typeerror except valueerror raiserror