标题感觉取的怪怪的,所以还是用代码举个例子吧。
目前有三个 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 类吗?
|