TypeError: 'staticmethod' object is not callable while using decorators inside classes
TypeError: 'staticmethod' object is not callable while using decorators inside classes
我下面有一些代码
class Example:
def __init__(self,height,weight)
self.height = height
self.weight = weight
@staticmethod
def some_op(func)
def inner(*args,**kwargs)
s = func(*args,**kwargs)
print("Implementing function...")
@some_op
def num_op(self,values):
for value in values:
v = value * 10
q = v - 100
c = q ** -1
return c
example = Example()
values = [11,23123,1209,234]
example.num_op(values)
但它输出:
TypeError: 'staticmethod' object is not callable
我真的不了解 class 中的装饰器,所以我应该如何更改代码以使其 returns:
Implementing function...
0.0004464285714285714
非常感谢!
静态方法不可调用;它是一个对象,其 __get__
方法 returns 是一个可调用对象。但是,您没有将 some_op
(除了不完整的定义)作为属性访问,而是作为常规函数访问,因此它的 __get__
方法永远不会被使用。您有两个选择:
- 将
some_op
定义为 class 之外的常规函数。
- 不要将
some_op
定义为静态方法。由于您只是在 class 定义本身内部调用它,所以让它成为一个常规函数,只是不要将它用作实例方法。 (你可以定义为_some_op
来强调它不应该在class之外使用。)
有关 __get__
是什么及其工作原理的更多信息,请特别参阅 Decriptor HowTo Guide and the section on static methods。
我下面有一些代码
class Example:
def __init__(self,height,weight)
self.height = height
self.weight = weight
@staticmethod
def some_op(func)
def inner(*args,**kwargs)
s = func(*args,**kwargs)
print("Implementing function...")
@some_op
def num_op(self,values):
for value in values:
v = value * 10
q = v - 100
c = q ** -1
return c
example = Example()
values = [11,23123,1209,234]
example.num_op(values)
但它输出:
TypeError: 'staticmethod' object is not callable
我真的不了解 class 中的装饰器,所以我应该如何更改代码以使其 returns:
Implementing function...
0.0004464285714285714
非常感谢!
静态方法不可调用;它是一个对象,其 __get__
方法 returns 是一个可调用对象。但是,您没有将 some_op
(除了不完整的定义)作为属性访问,而是作为常规函数访问,因此它的 __get__
方法永远不会被使用。您有两个选择:
- 将
some_op
定义为 class 之外的常规函数。 - 不要将
some_op
定义为静态方法。由于您只是在 class 定义本身内部调用它,所以让它成为一个常规函数,只是不要将它用作实例方法。 (你可以定义为_some_op
来强调它不应该在class之外使用。)
有关 __get__
是什么及其工作原理的更多信息,请特别参阅 Decriptor HowTo Guide and the section on static methods。