Python 3.4: 静态方法只能从实例中调用吗?
Python 3.4 : can static methods only be called from an instance?
我正在尝试从 class 中调用 @staticmethod
方法来初始化 class 变量,如下所示:
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
但是使用该代码,我现在需要实例化 class 来执行此操作。
有没有办法让我在不实例化 class 的情况下使用 Test.num
并获得 8
而不是 None
?我希望这样做是为了避免冗余,方法 get_bit_count()
中只有一个变量可以在我希望更新代码时进行更改。
静态方法,如 staticmethod 的文档中所述,只能在 class 或实例上调用。
不过,您可以使用常规方法。如果你也想在一个实例上调用它,只需让它接受任意数量的参数:
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
我正在尝试从 class 中调用 @staticmethod
方法来初始化 class 变量,如下所示:
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
但是使用该代码,我现在需要实例化 class 来执行此操作。
有没有办法让我在不实例化 class 的情况下使用 Test.num
并获得 8
而不是 None
?我希望这样做是为了避免冗余,方法 get_bit_count()
中只有一个变量可以在我希望更新代码时进行更改。
静态方法,如 staticmethod 的文档中所述,只能在 class 或实例上调用。
不过,您可以使用常规方法。如果你也想在一个实例上调用它,只需让它接受任意数量的参数:
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