У меня есть проблема в Python, которую я считаю теоретически возможным, но, возможно, не на практике. У меня есть класс, который имеет много разных подклассов. Каждый объект из объектов подклассов получает имя на основе некоторых свойств, которые являются уникальными для подкласса. После того, как это имя определено, я хочу, чтобы каждый из них выполнял один и тот же метод, но на основе этого имени. Поэтому я хотел бы поместить это в __init__
родительского класса, но этот бит должен выполняться ПОСЛЕ выполнения подкласса __init__
. Я полагаю, что я мог бы вызвать какой-нибудь метод из родительского класса в каждом из подклассов __init__
в конце, но тогда я буду копировать код, и это мне не подходит.
Поэтому мне было интересно, есть ли более элегантное решение.
class Cell(object):
def __init__(self, some_essential_property=1):
self.some_essential_property = some_essential_property
# New execute subclass __init__, so that it can make the name
# Then:
self.name = self.make_name()
print(self.name)
def make_name(self):
return 'no_special_name'
class Muscle_cell(Cell):
def __init__(self, strength='huge'):
super().__init__()
self.strength = 'huge'
def make_name(self):
return 'muscle_with_' + self.strength + '_strength_and_' + str(self.some_essential_property)
M1 = Muscle_cell()
Это вызовет ошибку, потому что сила еще не известна как атрибут. Вот почему я хотел бы выполнить определенные строки сразу после подкласса __init__
.