class Gui():
var = None
def refreshStats(args):
print(str(var))
clas = Gui()
clas.refreshStats()
След
File "sample.py", line 5, in refreshStats
print(str(var))
NameError: name 'var' is not defined.
Почему?
class Gui():
var = None
def refreshStats(args):
print(str(var))
clas = Gui()
clas.refreshStats()
След
File "sample.py", line 5, in refreshStats
print(str(var))
NameError: name 'var' is not defined.
Почему?
Если вы хотите, чтобы ваши переменные были видны в рамках функций вашего класса, передайте self в каждую функцию класса и используйте переменные вашего класса как self.var
, например:
class Gui():
var = None
def refreshStats(self, args):
print(str(self.var))
clas = Gui()
clas.refreshStats()
Если вы хотите использовать это как переменную экземпляра (только для этого экземпляра класса), а не как переменную класса (общая для всех экземпляров класса), вы должны объявить ее в функции __init__
:
class Gui():
def __init__(self):
self.var = None
def refreshStats(self, args):
print(str(self.var))
clas = Gui()
clas.refreshStats()
сделать метод внутри класса либо метод класса, либо метод экземпляра, тогда вы можете получить доступ ко всем свойству экземпляра класса или переменной внутри метода, если метод является методом экземпляра или если метод класса, тогда свойство класса, к которому вы можете получить доступ внутри метода
class A():
a = 0
def aa(self):
"""instance method"""
print self.a
@classmethod
def bb(cls):
"""class method"""
print cls.a
var
не определен в области действия вашей refreshStats()
функции, так как это переменная класса.
Таким образом, если вы хотите получить к нему доступ, вы можете сделать Gui.var
.
var
не определено.
- person chepner; 18.04.2017
var
атрибут класса, принадлежащий классуGui
, поэтому вам нужно обращаться к нему какGui.var
. - person khelwood   schedule 18.04.2017self
наrefreshStats
(если вы не собираетесьargs
быть классом) - person OneCricketeer   schedule 18.04.2017