Как переменная экземпляра будет использоваться в методе класса? - PullRequest
0 голосов
/ 19 февраля 2019

Есть ли способ, которым в методах класса я могу использовать переменную экземпляра для выполнения вычисления?

Очень упрощенно, вот что я пытаюсь сделать:

class Test:

  def __init__(self, a):
    self.a = a

  @classmethod
  def calculate(cls, b):
     return self.a + b

Ответы [ 2 ]

0 голосов
/ 19 февраля 2019

все, что я хочу, это объявить переменную 'a', а затем использовать ее в методе класса для целей расчета.

Если вы хотите кэшировать значение для всего класса, этиВот ваши основные параметры:

Установите значение явно:

class Foo:
    @classmethod
    def set_foo(cls):
        print('Setting foo')
        cls.foo = 'bar'

    def print_foo(self):
        print(self.__class__.foo)

Foo.set_foo()      # => 'Setting foo'
Foo()
Foo().print_foo()  # => 'bar'

Установите значение в классе init:

class Foo:
    print('Setting foo')
    foo = 'bar'

    def print_foo(self):
        print(self.__class__.foo)
# => 'Setting foo'

Foo()
Foo()
Foo().print_foo()  # => 'bar'

Установите значение в первом экземпляре init:

class Foo:
    def __init__(self):
        if not hasattr(self.__class__, 'foo'):
            print('Setting foo')
            self.__class__.foo = 'bar'

    def print_foo(self):
        print(self.__class__.foo)

Foo()              # => 'Setting foo'
Foo()
Foo().print_foo()  # => 'bar'
0 голосов
/ 19 февраля 2019

Если вы хотите использовать пространство имен, используйте @staticmethod и разрешите пользователям передавать переменные, например, Test.calculate(a, b)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...