【发布时间】:2019-11-16 23:42:38
【问题描述】:
如何用参数装饰类方法?当前代码是
def establish_con(func):
con, meta = db.connect(config.user, config.password, config.db)
meta.reflect(bind=con)
def inner(self, query, con, *args, **kwargs):
return func(self, query, con, *args, **kwargs)
con.close()
return inner
class DataReader:
def __init__(self):
self.data = {}
@establish_con
def execQuery(self, query, con):
# con, meta = db.connect(config.user, config.password, config.db)
# meta.reflect(bind=con)
result = pd.read_sql(query, con)
# con.close()
return result
test = DataReader()
df = test.execQuery("Select * from backtest limit 10")
print(df)
目前,第一个参数似乎是类实例。我尝试了代码的不同变体,但总是遇到太多/不够/未定义的参数问题。
我读过其他类似的帖子
How do I pass extra arguments to a Python decorator?
还有其他人,但还是想不通。
编辑:不是 Python decorators in classes 的副本,因为在这个答案中不需要将参数传递给函数。
【问题讨论】:
-
@fizzybear 不是重复的,因为该答案中没有传递任何参数。
-
我同意这不是那个问题的重复,但它不是minimal reproducible example。
标签: python