首页 > 解决方案 > 如何将扩展父类的属性获取到其嵌套的子类?

问题描述

class A(C):
    def __init__(self, driver):
        super().__init__(driver)

    class B:
        def __init__(self, *args, n=3):
            self.somethingA = args[0]
            self.somethingB = args[1]

我需要self.driverClass A扩展的实例继承属性Class CClass B.

我尝试了什么:

class A(C):
    def __init__(self, driver):
        super().__init__(driver)

    class B:
        def __init__(self, *args, n=3):
            self.somethingA = args[0]
            self.somethingB = args[1]
            self.driver = A.driver

但这是错误的。有什么方法可以解决这个问题吗?解决方案:A.B(arg0, arg1)

标签: pythonpython-3.x

解决方案


接近它的“正确”方法在很大程度上取决于驱动程序对象是什么。一种方法是您可以将“驱动程序”作为 A 的类变量,然后根据需要进行设置。下面将它设置为 init,但如果你需要更新它,那么你也可以有一个更新方法(可能也想降到 C,但我不知道你的上下文)。

class C(object):
    def __init__(self, driver):
        self.driver = driver

class A(C):
    driver = None
    
    def _set_driver_at_init(self, driver_at_init):
        driver = driver_at_init

    def __init__(self, driver):
        super().__init__(driver)
        self._set_driver_at_init(driver)

    class B:
        def __init__(self, *args, n=3):
            self.somethingA = args[0]
            self.somethingB = args[1]
            self.driver = A.driver

推荐阅读