Как сделать переменную в моем классе глобальной, но сделать ее только глобальной в классе? - PullRequest
0 голосов
/ 12 января 2019

Я хочу сделать так, чтобы х был только глобальным в классе.

Я пытался использовать self.x, но это не похоже на работу. Я мог бы сделать это неправильно, хотя.

class Test:

   def __init__(self):
      pass

   def test1(self,number):
      global x
      x = number
      print(x)

   def whereIwantToRedefineIt(self):
      print(x)


Test().test1(2) #<------ Making output 2

x=200 #<-------------- It should not be able to redefine the variable

Test().whereIwantToRedefineIt() #<-------- I want to make this output 2

Я хочу, чтобы функция "whereIwantToRedefineIt" не зависела от "x = 200", который находится вне класса. Я хочу, чтобы он вывел 2

Ответы [ 2 ]

0 голосов
/ 12 января 2019

Самая близкая вещь - это переменная класса , к которой можно обратиться, добавив префикс имени переменной к имени класса:

class MyClass:
    somevar = 0
    def somemethod(self):
        print(MyClass.somevar)
0 голосов
/ 12 января 2019
class Test:

  def __init__(self):
      self.x = None
  def test1(self,number):
      self.x = number
      print(x)

   def whereIwantToRedefineIt(self):
      print(self.x)

Вы можете получить желаемый результат, если вызовете методы для одного экземпляра.

test = Test()
test.test1(2)
test.whereIwantToRedefineIt() # This will print 2
...