标题感觉取的怪怪的,所以还是用代码举个例子吧。
目前有三个 py 文件,当然这里简化了。其中 test2.py 是第三方库的。
test1.py :
import threading from test2 import A testA = A(1) class B: def __init__(self): self._lock = threading.Lock() def do_something_1(self): def callback(): pass testA.do_something(callback)
class A: def __init__(self, param1): self.a = param1 # 初始化很多东西,加载些模型 def do_something(self, callback_func): while True: # 想在 reading 之前,获取到 test1.py 中实例的锁,这个可以做到吗 # reading callback_func()
from flask import Flask, jsonify from test1 import B app = Flask(__name__) @app.route('/xxx/') def test1(): b = B() b.start() return jsonify({'msg': 'b has started.'}) if __name__ == '__main__': app.run()
然后现在想在 test2.py 中的 reading 前获取到 B 类的实例中的 lock 成员,或者其他成员,这个要怎么做到啊,我想半天都不知道要怎么才获取的到,用 globals()和 locals()看了都没有。。
1 xiaolinjia OP 之前想到的一个方法是,继承下第三方库的 A 类,然后重载下 do_something 方法,增加多一个参数比如 before。 然后在 B 类的 do_something1()中,testA.do_something(callback, before=self)。这样就能在 A 类的 do_something()中获取到 A 实例的成员的值,不过个人感觉不太优雅。就当抛砖引玉吧 |
![]() | 2 bigNewsMaker 2020-01-17 12:53:50 +08:00 能把 A 类定义为继承 B 类吗? |