#python #python-3.x
#python #python-3.x
Вопрос:
У меня есть задание о функциях класса, поэтому просто укажите мне правильное направление. Мне не нужен ответ, просто небольшая помощь в визуализации проблемы
Согласно нашему уроку, графики состоят из наборов вершин и ребер.
итак G = (V, E)
, когда V={v1, v2, v3, v4} and E = {(v1, v2), (v1, v3), (v2, v3), (v2, v4), (v4, v1), (v4, v3)}
И мне дается код шаблона, который выглядит следующим образом:
class Vertex:
def __init__(self, value=0): # CAN ADD VAR
self.key = None
self.value = value
class Edge:
def __init__(self, k1, k2, value=0): # CAN ADD VAR
self.key = (k1, k2)
self.value = value
class Graph:
def __init__(self): # DO NOT MODIFY
self._vertice = list()
self._edges = list()
self._vkeys = set()
self._ekeys = set()
def getV(self):
return self._vertice[:]
def getVkeys(self):
return set(self._vkeys)
def getE(self):
return self._edges[:]
def getEkeys(self):
return set(self._ekeys)
Предполагается, что я использую этот класс для реализации графика и создания другой функции класса, которая имеет дело с направленными и неориентированными графами и сообщает, имеют ли они эйлеровы пути или нет
class DiGraph(Graph):
def euler(self):
Я просто не знаю, как думать о классе Graph. Я просто думаю об этом как о наборе вершин и ребер, как описано в уроке?
({Vertex},{Edge})
Я надеюсь, что кто-нибудь может дать мне подсказку
Комментарии:
1. это может помочь python graph или любой книге по структуре данных на python
Ответ №1:
В этом случае у вас есть базовый класс Graph
. Он содержит все параметры для графика. Такие вещи, как edges
, vertices
, и т.д. Тогда у вас есть DiGraph
то, что наследуется от Graph
. Весь материал из базового Graph
класса доступен в DiGraph
. DiGraph
имеет дополнительную функцию euler
. Из этой euler
реализации вы должны получить доступ к переменным Graph
и решить проблему.
Обновить
Чтобы добавить вершины или ребра в этот класс, вы должны получить к нему доступ извне:
graph = Graph()
graph._vertice.append(Vertex())
Вы можете создать некоторые вспомогательные функции внутри Graph
, чтобы добавлять или манипулировать им.
Вот учебное пособие по наследованию int python:
https://docs.python.org/3/tutorial/classes.html
Комментарии:
1. Там, где это возможно, лучше ссылаться на официальную документацию. Много раз я сталкиваюсь с такими случайными ресурсами с ошибками или неясными объяснениями, которые только еще больше запутывают новичков. Если у вас есть какая-либо конкретная принадлежность к этому сайту, вы должны четко указать это в своем ответе, иначе это может показаться спамом
2. @Tomerikoo хм, ну, это было первое, что пришло мне в голову, когда я быстро поискал в Google. Я также подумал, что это будет легче понять по сравнению с официальной документацией.
3. Проще не всегда означает лучше. Вы бы предпочли, чтобы я объяснил вам о двигателе вашего автомобиля или сертифицированном механике? Я мог бы хорошо объяснить, но ничего не знаю о движках… Буквально вчера я столкнулся с вопросом здесь от новичка, который цитировал такой сайт с совершенно вводящими в заблуждение и ложными утверждениями. Если это не официально — нет никакой гарантии, что то, что вы читаете, является правдой…
4. @Tomerikoo это полностью зависит от контекста вопроса. Если я спрошу вас, как считывать некоторые данные из базы данных, и вы объясните всю архитектуру базы данных и то, как она была реализована, и всю ее историю с начала 1970 года, мне это не будет полезно. Кстати, я добавил ссылку на официальную документацию, так что расслабьтесь.
5. @WinnyDaPoo вроде как, он хранит все объекты вершин и ребер и их свойства. тем не менее, я предлагаю вам перейти к правильному руководству, добавив пример выше в разделе комментариев, который может помочь