Форум сайта python.su
0
ребята, не подумайте, что издеваюсь, но у меня есть два притянутых за уши примера и я не понимаю какой из них больше соответствует принципу открытости/закрытости. помогите пожалуйста разобраться
суть примеров в том, что нужно сгенерировать двигатели в количестве, которое вводит пользователь
вот первый пример:
import random PETROL_TYPE = 'petrol' ELECTRO_TYPE = 'electro' PETROL_WEIGHT = 100 ELECTRO_WEIGHT = 50 class Engine: def __init__(self, type, weight): self.serial_num = random.randint(1000000, 9999999) self.type = type self.weight = weight def __repr__(self): return '<Engine: {}/{}>'.format(self.type, self.weight) print('сколько двигателей типа pertol загрузить на склад?') petrolEngineCnt = input() petrolEngineSet = [] for i in range(int(petrolEngineCnt)): engine = Engine(PETROL_TYPE, PETROL_WEIGHT) petrolEngineSet.append(engine) print('сколько двигателей типа electro загрузить на склад?') electroEngineCnt = input() electroEngineSet = [] for i in range(int(electroEngineCnt)): engine = Engine(ELECTRO_TYPE, ELECTRO_WEIGHT) electroEngineSet.append(engine) print(petrolEngineSet) print(electroEngineSet)
import random from abc import ABCMeta, abstractmethod class IEngine(metaclass=ABCMeta): @abstractmethod def get_type(self): pass @abstractmethod def get_weight(self): pass class PetrolEngine(IEngine): def __init__(self): self.type = 'petrol' self.weight = 100 def get_type(self): return self.type def get_weight(self): return self.weight def __repr__(self): return '<Engine_raw: {}/{}>'.format(self.type, self.weight) class ElectroEngine(IEngine): def __init__(self): self.type = 'electro' self.weight = 50 def get_type(self): return self.type def get_weight(self): return self.weight def __repr__(self): return '<Engine_raw: {}/{}>'.format(self.type, self.weight) class Engine: def __init__(self, engine): self.serial_num = random.randint(1000000, 9999999) self.type = engine.get_type() self.weight = engine.get_weight() def __repr__(self): return '<Engine: {}/{}>'.format(self.type, self.weight) from app.classes.engine import * print('сколько двигателей типа pertol загрузить на склад?') petrolEngineCnt = input() petrolEngineSet = [] for i in range(int(petrolEngineCnt)): engine = Engine(PetrolEngine()) petrolEngineSet.append(engine) print('сколько двигателей типа electro загрузить на склад?') electroEngineCnt = input() electroEngineSet = [] for i in range(int(electroEngineCnt)): engine = Engine(ElectroEngine()) electroEngineSet.append(engine) print(petrolEngineSet) print(electroEngineSet)
Офлайн
857
zlodiakА ты сам принцип понял?
какой из них больше соответствует принципу открытости/закрытости
Отредактировано py.user.next (Апрель 30, 2019 02:37:15)
Офлайн