Wpis z mikrobloga

@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.
@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?
@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. 1:

class Test:
____def __init__(self, name)
________self.name = name
2. Podejscie nr. 2

class Test:
____pass
test = Test()
test.name = "adam"
print(test.name)
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?


@mizantrol: Chodzi o podstawy OOP - obiektowego paradygmatu. Tworzysz "obiekty", czyli twory będące polaczeniem danych (atrybutów) i. funkcji, operacji, które można na tych danych przeprowadzić. Jeżeli masz klasę Test, która wymaga podczas inicjalizacji podania atrybutu "name", to znaczy, że możesz stworzyć wiele różnych obiektów według
to mogę potem w metodzie klasy:

def metoda(self, zmienna):

?


@mizantrol: Możesz, ale to nie będzie zmienna z __init__, scope zawęża się do metody i będzie rozpatrywał pewną zmienną (którą musisz podać) wewnątrz tej funkcji.
@arysto2011: czyli jak mam w
def _init(self, name, word):
self.name = name
self.word = word

to w
metoda(self):
self.name = "cokolwiek"

to "cokolwiek" istnieje tylko wewnątrz metoda(self), a self.name w
init_ zostaje takie jakie było przydzielone podczas tworzeniu instancji klasy?