У меня есть базовый класс и несколько подклассов, унаследованных от него.Мне нужно создать правильный подкласс на основе предоставленного файла конфигурации.Теперь, один из способов сделать это - использовать оператор if, else и проверить файл конфигурации для создания экземпляра подкласса, но это кажется плохим программным кодом.Кроме того, позже, если я добавлю больше подклассов, цепочка if-else будет расти очень долго.Может кто-нибудь предложить лучший способ сделать это?
У меня есть шаблон кода, где вместо файла конфигурации я беру аргумент командной строки, чтобы сделать то же самое.
class Shape(object):
pass
class Rectangle(Shape):
pass
class Circle(Shape):
pass
class Polygon(Shape):
pass
import argparse
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument('-s', '--shape', help='Provide the shape')
args = parser.parse_args()
if args.shape == 'circle':
shape = Circle()
print(shape.__class__.__name__)
elif args.shape == 'rectangle':
shape = Rectangle()
print(shape.__class__.__name__)
elif args.shape == 'polygon':
shape = Polygon()
print(shape.__class__.__name__)
else:
raise Exception("Shape not defined")