Это правильный способ написания исключения в Python?
Является ли следующий код правильным способом написания исключения в Python?
class Calculator:
def power(self,n,p):
self.n=n
self.p=p
if self.n>=0 and self.p>=0:
return self.n**self.p
else:
return ("n and p should be non-negative")
myCalculator=Calculator()
T=int(input())
for i in range(T):
n,p = map(int, input().split())
try:
ans=myCalculator.power(n,p)
print(ans)
except Exception as e:
print(e)
Спасибо!
1 ответ
Вы просто возвращаете строку из power
где вы, вероятно, хотите поднять исключение. Кроме того, вы должны проверить n
а также p
прежде чем изменить объект. (Я не буду вдаваться в подробности, почему power
устанавливает атрибуты.)
class Calculator:
def power(self, n, p):
if n < 0 or p < 0:
raise ValueError("Both arguments should be non-negative")
self.n = n
self.p = p
return self.n ** self.p
myCalculator = Calculator()
T = int(input())
for i in range(T):
n, p = map(int, input().split())
try:
ans = myCalculator.power(n,p)
print(ans)
except Exception as e:
print(e)