Wpis z mikrobloga

#naukaprogramowania #programowanie #python

powiedzmy, że mamy:

class Wykop(plus):

....def __init__(self, elfik, ban):
........self.elfik = elfik
........self.ban = ban
....def zakop(self):
....print(self.elfik)
....print(ban)
moderator = Wykop("usuwamkonto", "duplikat")
moderator staje się instancją klasy Wykop >
("usuwamkonto", "duplikat") = plus ?? >
("usuwamkonto", "duplikat") ładują się do inita kolejno do elfik, ban?? >

........self.elfik = elfik > wyciągam z zewnątrz ten string ?? >
czy w funkcji zakop muszę dać te argumenty co wcześniej?? >
i pewnie tego ban nie da się printować, tylko czemu ?? >

strasznie to jest dziwne, przeczytałem gdzieś, że w innych językach te rzeczy dzieją się poza wzrokiem programisty, żeby nie musiał na to patrzeć
  • 19
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@ponuryrolnik: wydaje mi się, że żeby wykonała się metodą plus._init_ to powinienes użyć funkcji super()

Jak dasz w init ban=perm to się nic nie stanie. Powinieneś go ustawić przed class Wykop
  • Odpowiedz
@ponuryrolnik: A dalej tak jak mówisz,
Pierwszy argument to elfik, drugi to ban. Te zmienne są widoczne lokalnie w Wykop.__init__()
A self to instancja klasy Wykop, przekazuje ją interpreter w momencie użycia instancja_klasymetoda -- wtedy wywoływana jest Klasa.metoda(instancja_klasy)
  • Odpowiedz
@ponuryrolnik: Ok, nie wiem czy mam rację, ale odnoszę wrażenie, że tutaj jest niejasność:

class Wykop(plus):
oznacza, że masz klasę Wykop, która dziedziczy z klasy plus, czyli będzie miała takie same metody jak klasa plus. To nie ma nic wspólnego z argumentami, które przekazujesz przy tworzeniu obiektu. Argumenty definiujesz w funkcji __init__
  • Odpowiedz
czyli ta klasa Plus to jakby klasa Matka dla Wykop(Plus) ?


@ponuryrolnik: Tak. Klasa Wykop będzie miała te same metody, które ma klasa Plus. Ten nawias w tamtym miejscu odnosi się do dziedziczenia. To coś całkowicie innego niż nawias przy

moderator = Wykop("usuwamkonto", "duplikat")
  • Odpowiedz