我正在尝试不同的方法来理解 Python 中的装饰器和函数。以下代码是否正确:
import math
def calculate_area(func):
def area(a,b):
return a+b
return area
class Donut():
def __init__(self, outer, inner):
self.inner = inner
self.outer = outer
@calculate_area
@staticmethod
def area(self):
outer, inner = self.radius, self.inner
return Circle(outer).area() - Circle(inner).area()
“staticmenthod”装饰器会告诉内置的默认元类类型(类的类,参见这个问题)不要创建绑定方法吗?是否可以这样做:
Donut.area(4,5)
Traceback (most recent call last):
File "<pyshell#33>", line 1, in <module>
Donut.area(4,5)
TypeError: unbound method area() must be called with Donut instance as first argument (got int instance instead)
请帮助我理解绑定方法和未绑定方法以及装饰器对它们的影响。