Python <__0x05DE4250处的主圆圈对象>;
有人能帮忙吗 我正在努力使这个计划奏效Python <__0x05DE4250处的主圆圈对象>;,python,Python,有人能帮忙吗 我正在努力使这个计划奏效 class Circle: def __init__(self, radius): self.__radius = radius; if self.__radius <= 0: raise ValueError('must not be less than or equal to 0') elif not isinstance(self.__radius, (int, f
class Circle:
def __init__(self, radius):
self.__radius = radius;
if self.__radius <= 0:
raise ValueError('must not be less than or equal to 0')
elif not isinstance(self.__radius, (int, float)):
raise TypeError('must be an integer value')
def main():
try:
c = Circle("n")
except ValueError as x:
print("Error: " + str(x))
else:
print(c)
main()
但是,相反,我得到的是:
TypeError: '<=' not supported between instances of 'str' and 'int'
到
我会得到答案,但如果我改成
c = Circle(10)
我会得到这个错误
<__main__.Circle object at 0x05DE4250>
TypeError:“最后一行不是错误:它是print
函数的输出。第一行是错误,试图比较int
和str
。第二个不是错误,这是类的str
表示。您没有告诉Python如何打印Circle
对象,因此它会打印它的一些通用形式;这就是您所看到的。您的异常只检查ValueError
,而在您的情况下,您的异常是TypeError
。因此(在本例中),TypeError
也应该作为main
中的可能异常。
c = Circle(-10)
c = Circle(10)
<__main__.Circle object at 0x05DE4250>
class Circle:
def __init__(self, radius):
self.__radius = radius
if not isinstance(self.__radius, (int, float)):
raise TypeError('must be an integer value')
if self.__radius <= 0:
raise ValueError('must not be less than or equal to 0')
def __repr__(self):
return 'Circle of radius: {}'.self(radius)