Я хочу определить подкласс класса, и мне нужно, чтобы он был обновлен до одного из методов класса, а не инициализирован с самого начала.
Примером является хобби-проект с сетками и расстояниями в них.
Итак, я запускаю класс Grid следующим образом:
class Grid:
def __init__(self):
# A grid is a list of lists of cells.
self.grid = self.prepare_grid()
self.configure_cells()
self.maze = None
def __getitem__(self, a_tuple):
x, y = a_tuple
return self.grid[x][y]
def prepare_grid(self):
...
def configure_cells(self):
...
Затем я хочу добавить функцию расстояния.Я думал, как в игре, в которой вы улучшили свой статус и превратились в сетку расстояний, с такими методами, как:
class DistanceGrid(Grid):
def set_distances(self, root_cell):
...
def path_to(self, goal):
...
.Поскольку я не хочу, чтобы он был инициализирован, а скорее улучшен до, мне нужен метод родительского класса, чтобы сделать его подклассом (выглядит почти рекурсивно, но, надеюсь, это не так).
from distances import DistanceGrid
class Grid:
...
def upgrade_distance(self, root):
self = type(self, DistanceGrid)
self.set_distances(root)
Можно ли это сделать?Я буду продолжать пытатьсяСпасибо