我试图@staticmethod
从一个类中调用一个方法来初始化一个类变量,如下所示:
class Test:
@staticmethod
def get_bit_count():
return 8
num = get_bit_count()
但是,这立即引发了以下错误:TypeError: 'staticmethod' object is not callable
。
但是,以下代码工作正常:
class Test:
@staticmethod
def get_bit_count():
return 8
num = None
def __init__(self):
self.num = self.get_bit_count()
print(Test.get_bit_count())
print(Test().num)
可以调用该方法并num
使用以下输出正确设置变量:
8
8
但是使用该代码,我现在需要实例化该类才能这样做。
有没有办法让我使用Test.num
,并得到8
不None
无实例化类?我希望这样做是为了避免冗余,因为get_bit_count()
当我希望更新我的代码时,方法中只有一个变量要更改。
静态方法,如staticmethod文档中所述,只能在类或实例上调用。
不过,您可以使用常规方法。如果您还希望能够在实例上调用它,只需让它接受任意数量的参数:
class Test:
def get_bit_count(*args, **kwargs):
return 8
num = get_bit_count()
print(Test.num)
# 8
t = Test()
print(t.get_bit_count())
# 8
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句