python - python (2.7):使用类装饰器访问类属性
问题描述
我正在尝试访问一个类的实例(称为“a”),该实例被传递给第二个类(称为“b”)。我的意图是通过装饰实例 b 的类来访问实例“a”,以便我可以在“a”上设置一些后台线程任务,同时仍将“b”用于其他更重要的任务。这可能吗?
import threading
import inspect
Class doStuff():
def __init__(self, somePropertyFromAnotherClass):
self.lock = threading.Lock()
self.prop = somePropertyFromAnotherClass
def doCoolThreadingStuff():
print("do threading stuff with {}".format(self.prop))
def someDecorator(cls):
def wrapper(cls):
print(inspect.getrgspec(cls.__init__))
#ds = doStuff() ## this is the bit that i can't figure out!
wrapper(cls)
return cls
Class A():
def __init__(self):
self.obj = "i'm an object"
@someDecorator
Class B():
def __init__(self, obj):
self.obj = obj
def doSomethingWithObj():
print('doing something with obj')
if __name__ == "__main__":
a = A()
b = B(a)
解决方案
装饰器格式不正确
def someDecorator(cls_obj):
def wrapper(*args):
ds = doStuff(args[0]) # positional : /
ds.doCoolThreadingStuff()
return cls_obj(*args)
return wrapper
我可以使用上面的装饰器定义来访问 A 类的实例(传递给 B 类)
推荐阅读
- javascript - 功能组件中的道具
- reactjs - 尝试使用 React.forwardRef() 在嵌套组件中显示 ref 元素的当前大小 - 它总是显示以前的结果
- python-3.x - python返回/打印列表中一行中最大数量的值
- scala - 在 Scala 3 中打印 MirroredElemTypes
- vuejs2 - 如何在组合 API 中添加模块吸气剂?
- sqlalchemy - 如何在postgres中使用alembic回填递增的id
- python - 查找存在于一个列表中但不在另一个列表中的元素(反之亦然)
- javascript - 如何保护 PWA(渐进式 Web 应用程序)中的 API 密钥
- jsreport - Jsreport.aspnetcore 在 iis 服务器上不起作用
- wordpress - 重新启用始终显示发布前检查 WordPress