从实例化类中获取值而不将其作为参数传递

时间:2018-04-18 07:35:29

标签: python inheritance

有没有办法从class A 获取class B在运行时分配的值而不将作为参数传递给构造函数? (例如使用new_b = B(self.value)

class_a.py

from class_b import B

class A():
    def __init__(self, value):
        self.value = value
        self.load()

    def load(self):
        new_b = B()

class_b.py

class B():
    def __init__(self):
        self.value = A.value # here we should get a value from instantiating class A

2 个答案:

答案 0 :(得分:1)

是的,这是可能的,但从来没有这样做过。这是不好的做法,如果你开始考虑做这样的事情,你做错了。无论如何,这条线会做到这一点:

import inspect

inspect.getouterframes(inspect.currentframe())[1].frame.f_locals["self"].value

答案 1 :(得分:-1)

如上所述,传递参数的方式更为明确。但是,您可以尝试使用Super关键字初始化您想要获取值的基类方法。

请参阅此帖子以供参考,Understanding Python super() with __init__() methods