Здравствуйте. Ниже приведен искусственный (и нерабочий) пример, в котором создаются объекты разного класса в зависимости от параметра (кажется это называется паттерн стратегия). Последний класс Thingy выдает ошибку, т.к. питон не умеет, аки js, возвращать новосозданный объект из конструктора.
Подскажите, как этот пример сделать рабочим?
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
def info(self):
print('Point(', self.x, ',', self.y, ')')
class Cat:
def __init__(self, tail_len, eyes):
self.tail_len = tail_len
self.eyes = eyes
def info(self):
print('Cat with', self.tail_len, 'metres tail and', self.eyes, 'eye(s)')
class Thingy:
def __init__(self, what, prop1, prop2):
if what == 'point':
return Point(prop1, prop2)
elif what == 'cat':
return Cat(prop1, prop2)
else:
raise ValueError('Unknown thingy: ' + what)