Я хочу иметь возможность инициализировать подкласс путем вызова суперкласса. Например, я хотел бы иметь «Animal» в качестве суперкласса и «Dog» и «Cat» в качестве подклассов. Вместо того, чтобы называть собаку = Собака ("Фидо", "немецкий шеппард"), я хотел бы иметь возможность называть собаку = Животное ("Фидо", "немецкий шеппард"), и в то же время иметь собаку типа "Собака", а не "Животное"
Причиной этого является то, что мне приходится управлять большим количеством реле, схем и т. Д. Кажется, чище иметь один родительский тип в вызове для удобства использования человеком, но на стороне кода кажется неудобным писать инициализация для обработки всех различных опций для типов.
Я написал это как суперкласс и подклассы без проблем. Это всего лишь вопрос о том, как сделать его более элегантным.
# это не мой код, но это проще обсуждать, чем мой
class Pet(object):
def __init__(self, name, species):
self.name = name
self.species = species
class Dog(Pet):
def __init__(self, name, chases_cats):
Pet.__init__(self, name, "Dog")
self.chases_cats = chases_cats
def chasesCats(self):
return self.chases_cats