Иногда объект может быть создан с помощью различных типов аргументов. Например, объект круга может быть определен либо путем предоставления его радиуса или его окружности. Как мне написать метод __init__
, чтобы он создавал объект круга как при вводе пользователем радиуса, так и при вводе окружности.
Я придумал это, но он выглядит слишком раздутым:
class Circle:
def __init__(self, radius = None, circumference = None):
# Calculate area when user provides circumference
if radius is None and circumference is not None:
self.area = (circumference**2) / (4*3.14)
# Calculate area when user provides radius
elif radius is not None and circumference is None:
self.area = (radius ** 2) * 3.14
# Raise error if neither radius nor circumference or both are provided
else:
raise TypeError("Pass either a radius or circumference argument value")
По умолчанию для параметров задано значение None
или для этого сценария предусмотрен правильный способ Python?
Кроме того, правильно ли в этом случае использование TypeError
?
Я даже не знаю, считаются ли радиус и окружность необязательными или обязательными аргументами, поскольку хотя бы один из них как-то требуется. Может кто-нибудь просветить меня, пожалуйста?