python 类内部装饰器的实现
学习装饰器的知识,想在类内部,实现一个装饰器
from functools import wraps
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
print('{} created!'.format(self.name))
def freestyle(self, func):
@wraps(func)
def wrapper(*args, **kwargs):
print('Yo Yo, this is my freestyle!')
func(*args, **kwargs)
print('Yo Yo end of my freestyle!')
return wrapper
@freestyle
def self_introduce(self, style):
print('my name is: {}'.format(self.name))
print('I am {} years old'.format(self.age))
print('My style: {}'.format(style))
def main():
p1 = Person('Jack', 10)
p1.self_introduce('jazz')
if __name__ == '__main__':
main()
报错:
Traceback (most recent call last):
File "learn_decorator.py", line 2, in <module>
class Person:
File "learn_decorator.py", line 18, in Person
@freestyle
TypeError: freestyle() takes exactly 2 arguments (1 given)
应该怎么实现呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
哈哈,看到你这么幽默我都想笑。
def freestyle(func):
试试
@freestyle(self=1)