在类方法中将如何使用实例变量?

时间:2019-02-19 00:17:53

标签: python instance-variables class-method

有没有一种方法可以在类方法中使用实例变量执行计算?

非常简化,这是我正在尝试做的事情:

class Test:

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

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

2 个答案:

答案 0 :(得分:1)

  

我只想声明一个变量'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'

在类初始化时设置值:

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

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

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

在首次实例初始化时设置值:

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'

答案 1 :(得分:0)

如果您想使用命名空间,请改用@staticmethod并让用户传入变量,例如Test.calculate(a, b)