Подтвердить что ты не робот

Глобальные классы Python переменных

Каков правильный способ определения глобальной переменной с областью класса в python?

Исходя из фона C/С++/Java, я предполагаю, что это правильно:

class Shape:
    lolwut = None

    def __init__(self, default=0):
        self.lolwut = default;
    def a(self):
        print self.lolwut
    def b(self):
        self.a()
4b9b3361

Ответ 1

То, что у вас есть, является правильным, хотя вы не будете называть его глобальным, это атрибут класса и может быть доступен через класс e.g Shape.lolwut или через экземпляр, например. Shape.lolwut, но будьте осторожны при настройке, поскольку он установит атрибут уровня экземпляра, а не атрибут класса

class Shape(object):
    lolwut = 1

shape = Shape()

print Shape.lolwut,
print shape.lolwut,

# setting shape.lolwut would not change class attribute lolwut 
# but will create it in the instance
shape.lolwut = 2

print Shape.lolwut,
print shape.lolwut,

# to change class attribute access it via class
Shape.lolwut = 3

print Shape.lolwut,
print shape.lolwut

выход:

1 1 1 2 3 2

Кто-то может ожидать, что вывод будет 1 1 2 2 3 3, но он будет неправильным