python - 如何将 self 参数设置为装饰器?
问题描述
有人能帮我吗?我有类似的东西:
class MyClass:
def __init__(self, *, arg1, arg2):
self.arg1 = arg1
self.arg2 = arg2
@test_dec('some param', self.arg2)
def test_func():
pass
但它不起作用。那么,我该怎么self.arg2
做test_dec
呢?
我想做类似的事情:
import socketio
sio = socketio.AsyncServer()
class MyClass:
def __init__(self, options):
self.options = options
@sio.on('connect', namespace=self.options['namespace'])
def func(): pass
解决方案
您可以arg2
通过以下引用访问装饰器self
:
def test_dec(param):
def outer(f):
def wrapper(_self):
_val = _self.arg2
#do something
return wrapper
return outer
class MyClass:
def __init__(self, *, arg1, arg2):
self.arg1 = arg1
self.arg2 = arg2
@test_dec('some param')
def test_func(self):
pass
推荐阅读
- c# - 为什么使用 ObjectARX 中的命令创建的视口不保存到数据库中?
- string - “String”类型不是“FontStyle”类型的子类型
- jquery - jQuery/Ajax 请求中的结果奇数加倍
- java - 速度从 1.7 升级到 2.0
- string - Powershell 中的字符串操作
- homebrew - 为什么 Homebrew 找不到公式?
- java - Spring Boot JPA 存储库查询
- java - 是否可以在java中获取引用变量的地址
- sql - SQL Server 2017 中的 CTE 递归
- javascript - 有没有办法使用 Handlebars.js 使用 jQuery 注入模板?