#python
#python
Вопрос:
Мне нужно узнать об использовании переменных для функции в том же классе.
Например, мой класс похож на приведенный ниже:
class MainWindow(QMainWindow):
def __init__(self,parent = None):
QMainWindow.__init__(self)
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
def myFunc1(self):
self.myVariable = 5
def myFunc2(self):
print(self.myVariable) #gives me 5
Когда я определил переменную, как self.myVariable
в myFunc1
, я получаю ее значение из myFunc2. Итак, если я использую self.
, делает ли это глобальную переменную?
Если я использую локальную переменную like в функции, должен ли я использовать ее без self?
Комментарии:
1. «Если я использую локальную переменную like в функции, должен ли я использовать ее без self?»: да.
2.
self
не является глобальной переменной, но привязана к классу (экземпляру). Фактически,self
ссылается непосредственно на экземпляр класса. Поэтому любая переменная, установленная сself.myVariable
помощью и т.п., привязана к экземпляру класса. Они не являются локальными для метода класса или глобальными (для скрипта или модуля), но привязаны к экземпляру класса.3. Использование «self.» аналогично использованию глобальных переменных, но они не являются глобальными. Вы можете использовать эту переменную в любом месте вашего класса. Но, конечно, они на самом деле не являются глобальными переменными.
4. Спасибо за ваши комментарии
Ответ №1:
Атрибуты, которые вы присваиваете self
методам класса в разделе, переносятся вместе с объектом self
/ . Так что, когда вы создаете атрибут (например, в вашем примере: self.myVariable=5
в одном из методов класса), вы также можете получить доступ к этому атрибуту из других методов класса.
И да, если вам нужна локальная переменная, которая рождается и умирает в методе, вам не нужно присоединять ее self
.
Ответ №2:
При использовании используйте self
для определения переменной, которая делает ее объектной переменной (атрибутом). Каждый объект класса будет иметь эту переменную (для разных объектов она может содержать разные значения). Для определения локальной переменной (только для функции в классе) вам не нужно использовать self
.
Вы можете прочитать больше о self
в python здесь.
Комментарии:
1. Спасибо за ваш комментарий