有没有办法在类方法中我可以使用实例变量来执行计算?
非常简化,这是我试图做的:
class Test:
def __init__(self, a):
self.a = a
@classmethod
def calculate(cls, b):
return self.a + b
我想要的只是声明一个变量'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'
如果你想让命名空间使用@staticmethod
而让用户传入变量,例如Test.calculate(a, b)