-
Notifications
You must be signed in to change notification settings - Fork 0
/
_vertex.py
54 lines (41 loc) · 1.53 KB
/
_vertex.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
"""Implementation der Klasse `Vertex`."""
from __future__ import annotations
__all__: Final[list[str]] = ["Vertex"]
from typing import Final
class Vertex:
"""Die Klasse Vertex stellt einen einzelnen Knoten eines Graphen dar. Jedes Objekt
dieser Klasse verfügt über eine im Graphen eindeutige ID als String und kann diese
ID zurückliefern.
Darüber hinaus kann eine Markierung gesetzt und abgefragt werden.
"""
__slots__: Final[tuple[str, str]] = ("_id", "_mark")
__hash__ = None # type: ignore[assignment]
def __init__(self, id_: str) -> None:
"""Ein neues Objekt vom Typ `Vertex` wird erstellt.
Seine Markierung hat den Wert `False`.
"""
self._id: str = id_
self._mark: bool = False
def __repr__(self) -> str:
return f"{self.__class__.__name__}(id={self._id!r}, mark={self._mark!r})"
def __str__(self) -> str:
return self._id
@property
def id(self) -> str:
"""Die Anfrage liefert die ID des Knotens als String."""
return self._id
@property
def mark(self) -> bool:
"""Die Anfrage liefert `True`,
wenn die Markierung des Knotens den Wert `True` hat, ansonsten `False`.
"""
return self._mark
@mark.setter
def mark(self, new_mark: bool) -> None:
self._mark = new_mark
@property
def is_marked(self) -> bool:
"""Die Anfrage liefert `True`,
wenn die Markierung des Knotens den Wert `True` hat, ansonsten `False`.
"""
return self._mark