Python 3.4:静态方法只能从实例中调用吗?
Posted
技术标签:
【中文标题】Python 3.4:静态方法只能从实例中调用吗?【英文标题】:Python 3.4 : can static methods only be called from an instance? 【发布时间】:2019-08-27 10:43:18 【问题描述】:我正在尝试从类中调用 @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()
中只有一个变量在我想更新我的代码时进行更改来避免冗余。
【问题讨论】:
【参考方案1】:静态方法,如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
【讨论】:
以上是关于Python 3.4:静态方法只能从实例中调用吗?的主要内容,如果未能解决你的问题,请参考以下文章