Siemka!
Chciałbym prosić Was o pomoc. Zaczynam przygodę z Pythonem, robię różne mało ważne rzeczy, lubię jednak je kończyć. Problem jaki spotkałem mi to uniemożliwia, mianowicie, muszę przekazać zmienną wcięcie wcześniej, pojęcia nie mam jak się za to zabrać.
Z góry dzięki za odpowiedź
Pozdrawiam
Robin98
Może po prostu zadeklaruj ją w tym "wcięciu wcześniej"?
Niestety, nie bardzo robię aplikację w wx i chciałbym żeby dana z okna była przekazana poza tą funkcję okna. Czy istnieje taka możliwość
Eee zrób do niej po prostu geter i spoza okna ją sobie pobierz? o_O
Patryk27 napisał(a):
Może po prostu zadeklaruj ją w tym "wcięciu wcześniej"?
Python ma w tym względzie mechanikę podobną do JS, opiera się o function scope, nie block scope.
Proszę o wyrozumiałość, to moje początki programowania.
Mam taką o to klasę:
class Path(object):
def __init__(self):
self.var = 100
def get_var(self):
return self._var
def set_var(self, new_var):
self._var = new_var
bmp = property(get_var, set_var)
wykonuje go mniej wiecej tak
Path.set_var = 200
print Path.get_var
Co robię źle?
Posługujesz się klasą zamiast jej instancji, używasz różnych nazw pól klasy (var
vs _var
) i przypisujesz do settera zamiast property:
path = Path()
path.bmp = 200
print path.bmp
Property możesz zapisać przy pomocy dekoratorów:
class Path(object):
def __init__(self):
self._var = 100
@property
def var(self):
return self._var
@var.setter
def var(self, new_var):
self._var = new_var
A gdybyś chciał tradycyjnie (bez użycia property), to tak:
path = Path()
path.set_var(200)
print path.get_var()
W
@var.setter
dostaję błąd
redefinition of function 'var' from line 10
a w linii 10 jest
@property
Kod jest prawidłowy, używasz jakiejś archaicznej wersji Pythona?
http://ideone.com/ac7we - 2.x
http://ideone.com/gHz31 - 3.x
Korzystam z Python(x,y)
mam Pythona 2.7