Я программист на Java в течение 4,5 лет. Теперь я перешел на Python (и главная причина в том, что я теперь фрилансер и работаю один). Я предоставляю исходный код своим клиентам, и иногда мне приходится мотивировать свой выбор дизайна. Теперь к вопросу.
Я должен поддержать мой выбор дизайна:
class Base(object):
def foo(self):
self.dosomethig(self.clsattr1)
self.dosomethig(self.clsattr2)
class Derived(Base):
clsattr1 = value1
clsattr2 = value2
Базовый класс всегда предназначен для расширения или получения.
Мой клиент (Java-программист) утверждает, что мой подход не элегантен с точки зрения ОО.
Он утверждает, что следующий подход лучше:
class Base(object):
def __init__(self, clsattr1, clsattr2):
self.clsattr1 = clsattr1
self.clsattr2 = clsattr2
def foo(self):
self.dosomethig(self.clsattr1)
self.dosomethig(self.clsattr2)
class Derived(Base):
def __init__(self):
super(Derived, self).__init__(value1, value2)
Я понимаю, что второй подход гораздо более элегантен, чем первый, но я сказал ему, что
Первый подход гораздо удобнее. Я сказал ему, что не вижу никаких проблем, но он не убежден.
Первый подход такой плохой? И почему?