Задать вопрос
@Oufinx

Можно ли использовать глобальные переменные в классе?

Добрый день

Имеется множество классов в которых используются одни и те же переменные. Можно ли вместо:
class name1():
    def ram1():
        a = ''
        b = ''
        a = 1
        b = 2

    def ram2():
        a = ''
        b = ''
        a = 3
        b = 4


Использовать:
a = ''
b = ''

class name1():
    def ram1():
        a = 1
        b = 2

    def ram2():
        a = 3
        b = 4
  • Вопрос задан
  • 1143 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
Технически можно, но с позиции правильности архитектуры - это ужасное решение. У каждого объекта должно быть собственное состояние:
class A:
    def method(self):
        self.a = 1
        self.b = 2
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Если a и b - это не изменяемые переменные (в Python нет констант), то допустимо. Без реального примера кода не возможно понять применение.

В приведенном Вами примере никакого смысла нет. a и b в первом примере - это локалные переменные, т.е. можно сказать с коротким временем жизни. Без использования self не произойдет привязки к экземпляру класса (не станут атрибутами). Помимо атрибутов экземпляров, есть еще и атрибуты класса.
Ответ написан
Комментировать
@bbkmzzzz
Никогда не используйте глобальные переменные)
Вы можете создать эталонный класс со всеми нужными переменными и наследоваться от него.
class Foo:
    def __init__(self):
        self.a = 1
        self.b = 2

    def f(self):
        return self.a + self.b


class Bar(Foo):
    def __init__(self):
        super().__init__()


x = Bar()
print(x.a)
x.a = 50
print(x.f())
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы