python 的装饰器怎么使用,请举个例子
时间: 2023-04-09 19:04:11 浏览: 83
装饰器是 Python 中非常有用的功能,它可以在不改变原函数代码的情况下,增加函数的功能或修改函数的行为。下面是一个装饰器的例子:
```
def my_decorator(func):
def wrapper():
print("Before the function is called.")
func()
print("After the function is called.")
return wrapper
@my_decorator
def say_hello():
print("Hello!")
say_hello()
```
在这个例子中,我们定义了一个装饰器 `my_decorator`,它接受一个函数作为参数,并返回一个新的函数 `wrapper`。在 `wrapper` 函数中,我们可以在调用原函数之前和之后添加一些额外的代码。最后,我们使用 `@my_decorator` 语法将 `say_hello` 函数装饰起来,这样每次调用 `say_hello` 函数时,都会先执行 `my_decorator` 中的代码。
输出结果为:
```
Before the function is called.
Hello!
After the function is called.
```
相关问题
请举一个静态方法的例子,用python实现
一个静态方法的例子可以是一个计算圆的面积的方法。静态方法不需要访问实例的属性或方法,因此可以直接作为类的方法调用。
以下是用python实现计算圆面积的静态方法的示例代码:
```python
class Circle:
pi = 3.14
@staticmethod
def area(radius):
return Circle.pi * radius ** 2
# 调用静态方法
radius = 5
print("圆的面积为:", Circle.area(radius))
```
在上面的示例中,我们定义了一个Circle类,其中pi为类变量,area为静态方法。静态方法通过@staticmethod装饰器来定义。我们可以通过类名直接调用静态方法,而不需要创建类的实例。在调用静态方法时,它不会访问类或实例的任何属性或方法,而是只使用传递给它的参数。
在方法前面加上 @property 装饰器,这个方法就可以作为一个属性使用,而不需要加括号。请给我举一个例子,一个加了,另一个没加
当一个方法被加上 @property 装饰器时,它可以像属性一样被访问,而不需要加括号。下面是一个例子:
```python
class Circle:
def __init__(self, radius):
self.radius = radius
@property
def area(self):
return 3.14 * self.radius * self.radius
circle1 = Circle(5)
print(circle1.area) # 输出: 78.5
```
在上面的例子中,`area` 方法被加上了 @property 装饰器。这样,我们可以直接通过 `circle1.area` 来访问圆的面积,而不需要使用括号调用方法。
阅读全文