V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
xiaolinjia
V2EX  ›  Python

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

  •  
  •   xiaolinjia · 2020-01-17 10:34:34 +08:00 · 2310 次点击
    这是一个创建于 1801 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    2 条回复    2020-01-17 12:53:50 +08:00
    xiaolinjia
        1
    xiaolinjia  
    OP
       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
        2
    bigNewsMaker  
       2020-01-17 12:53:50 +08:00
    能把 A 类定义为继承 B 类吗?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   880 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 20:02 · PVG 04:02 · LAX 12:02 · JFK 15:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.