mizantrol
#programowanie #python #naukaprogramowania

jeśli tworzymy instancje klasy to:

self.name = name

robimy po to, żeby mieć dostęp do tego name poprzez zmienna.name ?
1
  • Najlepsze
  • Wszystkie komentarze
arysto2011
1
arysto2011
@mizantrol: Zamiast rozkminiać godzinami napisz parę linijek, szybciej wyczujesz intuicyjnie co i jak.
1
arysto2011
1
p.....u
p.....u
@mizantrol: tak, plus to self jest jakby oznaczeniem, że chodzi o zmienną obiektu/instancji
0
mizantrol
@p0vnedu: a jak mam _init_(self, zmienna, zmienna2)

to mogę potem w metodzie klasy:

def metoda(self, zmienna):

?
0
zwei
@mizantrol: możesz, ale zmienna w metodzie nie będzie miała nic wspólnego z polem klasy
0
arysto2011
@mizantrol:

class Test:
____def __init__(self, name)
________self.name = name
test
0
arysto2011
0
mizantrol
@p0vnedu: @zwei: @arysto2011:

czy to będzie działać?

https://pastebin.com/dQtX7Djz
0
arysto2011
@mizantrol: co chcesz osiągnąć? Obie funkcje maja odmienny scope i nie - nie zadziała bez definicji klasy.

__init__() jest specjalna funkcja i definiuje argumenty wymagane podczas iniicjalizacji instancji obiektu. Wtedy mozesz uzywac atrybutow takiej instancji z zaprogramowanymi wartosciami. Wewnatrz klasy wlasciwe jej metody i atrybuty adresujesz poprzez self. Co oznacza, ze chcesz uzyc atrybutow tej konkretnej instancji.
0
mizantrol
@arysto2011: nic nie chcę osiągnąć, ale zrozumieć.

czyli jak chcę używać zmiennych z _init_ w metodzie to muszę zrobić:

self.zmienna = zmienna

i w metodzie używać self.zmienna? muszę to podawać jako argument metody?
0
arysto2011
0
arysto2011
@mizantrol: Sa dwa podejscia. Mozesz uzyc __init__() i kazac definiowac instancje wg przepisu z init (wtedy konstruktor bedzie wymagal tych wlasnie atrybutow na dzien dobry).

Druga opcja, to zostawic init pusty, albo go nie definiowac nawet i dynamicznie dodawac atrybuty i ich wartosci do instancji.

1. Podejscie nr.
0