p.....k
p.....k
#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ć
  • Najlepsze
  • Wszystkie komentarze
ProfesorBigos
@ponuryrolnik: chętnie pomogę, tylko nie jestem w stanie nic zrozumieć z tego co napisałeś, spróbuj jakoś klarowniej zadać pytanie albo wrzuć kod na pastebin
ProfesorBigos
@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__
p.....k
p.....k
@ProfesorBigos: czyli (plus) > class Plus()
czyli ta klasa Plus to jakby klasa Matka dla Wykop(Plus) ?
p.....k
p.....k
@Fypifapu: @ProfesorBigos: wszystko zaczyna układać się w jedną całość. łączę kropki w jedną linię sensu.
joolekk
joolekk
@ponuryrolnik: jakby ban było globalną zmienna to by się dało
p.....k
p.....k
@joolekk: w sensie

w init: ban = "perm"

?
Fypifapu
Fypifapu
@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
p.....k
p.....k
@joolekk: @Fypifapu:

a możecie coś napisać o mojej logice rozumienia klas? jak wy to byście wytłumaczyli, może podobnie czy inaczej?
p.....k
p.....k
moderator = Wykop("usuwamkonto", "duplikat")
gdzie poszczególne dane idą, konkretnie gdzie są umieszczane w klasie, jaka jest logika klas
Fypifapu
Fypifapu
@ponuryrolnik: No tak jak mówię.

W linii

moderator = Wykop("usuwamkonto", "duplikat")
Tworzona jest nowa instacja klasy Wykop, a następnie wywoływana
Fypifapu
Fypifapu
@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)
p.....k
p.....k
@Fypifapu:

moderator = Wykop(["usuwamkonto", "duplikat"])
?
Fypifapu
Fypifapu
@ponuryrolnik: Takie coś przekazuje jedną zmienną -- listę dwuelementową, wyląduje ona w elfik i wywali się, że metoda przyjmuje 3 argumenty (self + reszta) a podałeś 2.
Fypifapu
Fypifapu
@ponuryrolnik: Ale możesz zrobić tak:

lista = ["usuwamkonto", "duplikat"]
moderator = Wykop(*lista)

Wtedy zawartość listy zostanie "rozpakowana"
p.....k
p.....k
@Fypifapu: to jak normalnie dać 2 argumenty?
Fypifapu
Fypifapu
moderator = Wykop("usuwamkonto", "duplikat")


@ponuryrolnik:
p.....k
p.....k
moderator = Wykop("usuwamkonto", "duplikat")


@Fypifapu: moderator = Wykop("usuwamkonto", "duplikat")

napisałeś, że w tym kodzie funkcja init nie zostanie wywołana