Wpis z mikrobloga

Mógłby mi ktoś wytłumaczyć fragment kodu. Dotarłem do klas i czegoś nie rozumiem. Mam sobie taki kod: https://pastebin.com/SX08pdHC

1. Po wywołaniu klasy1 zwraca wartości poprawnie
2. Po wywołaniu klasy
2 i dodaniu tego co zwraca klasa1 do listy, klasa2 zwraca id obiektu, ale jak wywołam konkretny indeks to znowu zwraca poprawnie. Dlaczego?
3. Trzecie pytanie dotyczy warunku. Skąd python wie która wartość to nr1 a która nr2 w liście, tym bardziej, że obie wartości znajdują się pod tym samym indeksem listy? Wygląda to tak jakby do listy zostało przekazane jakieś id zmiennej ale nie jestem pewny czy to tak działa i czy dobrze to rozumiem.
4. _str_ zwraca stringa, a jak zwrócić liczbę?

#python #programowanie
  • 9
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

  • 2
@qubas89
Ad. 2) chyba po prostu chodzi Ci o _reprlink
Ad. 3) pod tym samym indeksem listy znajduje się obiekt klasy1, python o tym wie (zobacz jak ci wypisał zawartość listy), więc jeśli dasz list[0].nr1 to on wie czego i jak szukać.
Ad. 4) chodzi o
str_? to jest tylko funkcja używana tam gdzie wiadomo że powinien być tekst. Jak chcesz liczbę to albo wyciągasz konkretne pole (nr1,
  • Odpowiedz
@qubas89: po pytaniach widać, że chyba nie rozumiesz więcej niż myślisz XD, bo odpowiedzi nie mają za wiele do tematu klas:
1. nie ma czegoś takiego jak wywołanie klasy. print() domyślnie wywoła str() (czyli rzutowanie na stringa) na elemencie, czyli a str() zwróci to, co zwróci _str z klasy, które tu nadpisałeś.
2. printujesz całą listę, więc print woła str() na liście. tak wygląda domyślna reprezentacja listy jako string,
  • Odpowiedz
@qubas89:
2. Ponieważ lista zawiera obiekty a nie str(obiekt), odwołując się natomiast print(lista[0]) przywołujesz stringa z zerowego elementu listy. Aby lista zawierała w sobie string musisz albo ją tak zapisać czyli lista.append(str(obiekt)) lub zastosować repr albo zamiast wywoływać print(lista) zastosować print(list(map(lambda x: str(x),self.lista)))
3. Pisząc i.id1 przywołujesz z obiektu i zmienną id1 która sam wcześniej zapisałeś tworząc ten obiekt. Tutaj nie ma żadnego id po prostu bezpośrednio odwołujesz się do
  • Odpowiedz
@Tank1991: no przyznam się, że _ call _ po raz pierwszy widzę, python wciąż zaskakuje xd
Ale nadal uważam, że mówienie "wywołanie klasy" na tworzenie obiektu jest bez sensu
  • Odpowiedz
no przyznam się, że _ call _ po raz pierwszy widzę, python wciąż zaskakuje xd


@Arl0: a to myślałeś że jak funkcje działają? funkcje też są obiektami ( ͡° ͜ʖ ͡°)
  • Odpowiedz