【发布时间】:2021-11-10 05:47:18
【问题描述】:
我想在类中使用装饰器,但出现位置错误。 1.我不想使用 functools 和 import wraps。 2.我们可以在类内声明而不是在类外定义装饰器吗? 还有其他方法可以在类中声明装饰器吗?
from pytube import YouTube
if __name__ == "__main__":
class term :
# def __init__(self,u,v):
# self.url = u
# self.path = v
def check(func):
def parameters(self,u,v):
print(f"title:{YouTube(u).title}, views:{YouTube(u).views}, Length:{YouTube(u).length}")
func(u,v)
print("Yes done")
return parameters
# return check
@check
def video1(self,u,v):
# y = YouTube(u)
# print("Y is",y)
video1 = YouTube(u).streams.first().download(v)
print("Success")
return video1
u = input("Enter the video URL: ")
v = input("Enter the path: ")
t1 = term()
t1.video1(u,v)
print(t1)
如果我在类中初始化 u,v 并通过 t1 调用它并在诸如 check 之类的方法中使用它,它会给出一个错误,指出术语具有位置参数错误。
如果我在实例 t1 中初始化 u,v 并通过 t1.video1 调用它,并在 check 等方法中使用它,则会出现错误,指出视频没有位置参数“v”。
如何使用装饰器?请帮帮我。
【问题讨论】:
-
请添加您遇到的错误的回溯。
-
你需要在
func(self, u,v)这样的方法中传递self。
标签: python python-3.x decorator python-decorators