Zugriff aus einer Klasse
Verfasst: Donnerstag 28. Dezember 2023, 21:23
Hallo Leute,
es geht um diesen Code hier:
Es ist doch prinzipiell so das alles was in einer Klasse/Funktion geschrieben wird auch gekapselt sich nur in diesem Raum bewegt. Also wenn ich eine Funktion habe und diese nicht aufrufe oder ein Objekt einer klasse instanziiere dann hat man ja keinen Zugriff auf die Methoden, Variablen usw. richtig?
Weshalb kann dann auf push Zugreifen? hier wurde ein Objekt von der Klasse Stack instanziiert aber in wie fern hängt es damit zusammen das die Funktion hanoi nun Zugriff auf push hat? Bzw. hängt es überhaupt damit zusammen?
Danke fürs Antworten
es geht um diesen Code hier:
Code: Alles auswählen
from typing import TypeVar, Generic, List
T = TypeVar('T')
class Stack(Generic[T]):
def __init__(self) -> None:
self._container: List[T] = []
def push(self, item: T) -> None:
self._container.append(item)
def pop(self) -> T:
return self._container.pop()
def __repr__(self) -> str:
return repr(self._container)
num_discs = 3
tower_a: Stack[int] = Stack()
tower_b: Stack[int] = Stack()
tower_c: Stack[int] = Stack()
for i in range(1, num_discs + 1):
tower_a.push(i)
def hanoi(begin: Stack[int], end:Stack[int], temp:Stack[int], n: int) -> None:
if n == 1:
end.push(begin.pop())
else:
hanoi(begin, temp, end, n - 1)
hanoi(begin, end, temp, 1)
hanoi(temp, end, begin, n - 1)
Weshalb kann dann
Code: Alles auswählen
end.push(begin.pop())
Code: Alles auswählen
tower_a: Stack[int] = Stack()
Danke fürs Antworten