Язык программирования Python.

Определение класса.

Пусть в ходе анализа данной предметной области необходимо определить класс Граф. Граф — это множество вершин и набор ребер, попарно соединяющий эти вершины. Над графом можно проделывать операции, такие как добавление вершины, ребра, проверка наличия ребра в графе и т.п. На языке Python определение класса может выглядеть так:

From sets import Set as set # тип для множества.

Class G:

 def __init__(self, V, E):

  self.vertices = set(V).

  self.edges = set(E).

 def add_vertex(self, v):

  self.vertices.add(v).

 def add_edge(self, (v1, v2)):

  self.vertices.add(v1).

  self.vertices.add(v2).

  self.edges.add((v1, v2)).

 def has_edge(self, (v1, v2)):

  return (v1, v2) in self.edges.

 def __str__(self):

  return "%s; %s" % (self.vertices, self.edges).

Использовать класс можно следующим образом:

G = G([1, 2, 3, 4], [(1, 2), (2, 3), (2, 4)]).

Print g.

G.add_vertex(5).

G.add_edge((5,6)).

Print g.has_edge((1,6)).

Print g.

Что даст в результате.

Set([1, 2, 3, 4]); Set([(2, 4), (1, 2), (2, 3)]).

False.

Set([1, 2, 3, 4, 5, 6]); Set([(2, 4), (1, 2), (5, 6), (2, 3)]).

Как видно из предыдущего примера, определить класс не так уж сложно. Конструктор класса имеет специальное имя __init__. (Деструктор здесь не нужен, но он бы имел имя __del__.) Методы класса определяются в пространстве имен класса. В качестве первого формального аргумента метода принято использовать self. Кроме методов в объекте класса имеются два атрибута: vertices (вершины) и edges (ребра). Для представления объекта G в виде строки используется специальный метод __str__().

Принадлежность классу можно выяснить с помощью встроенной функции isinstance():

Print isinstance(g, G).