请教个 Python 不同 py 文件中的类获取另一个类实例变量的问题

2020-01-17 10:34:34 +08:00
 xiaolinjia

标题感觉取的怪怪的,所以还是用代码举个例子吧。

目前有三个 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)


test2.py

class A:
    def __init__(self, param1):
        self.a = param1
        # 初始化很多东西,加载些模型

    def do_something(self, callback_func):
        while True:
            # 想在 reading 之前,获取到 test1.py 中实例的锁,这个可以做到吗
            # reading
            callback_func()

test3.py

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()看了都没有。。

2161 次点击
所在节点    Python
2 条回复
xiaolinjia
2020-01-17 10:52:59 +08:00
之前想到的一个方法是,继承下第三方库的 A 类,然后重载下 do_something 方法,增加多一个参数比如 before。
然后在 B 类的 do_something1()中,testA.do_something(callback, before=self)。这样就能在 A 类的 do_something()中获取到 A 实例的成员的值,不过个人感觉不太优雅。就当抛砖引玉吧
bigNewsMaker
2020-01-17 12:53:50 +08:00
能把 A 类定义为继承 B 类吗?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/638646

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX