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

问题描述 投票:-1回答:2

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

非常简化,这是我试图做的:

class Test:

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

  @classmethod
  def calculate(cls, b):
     return self.a + b
python instance-variables class-method
2个回答
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'

在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
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.