python - 如何将扩展父类的属性获取到其嵌套的子类?
问题描述
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
从Class A
扩展的实例继承属性Class C
到Class 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)
解决方案
接近它的“正确”方法在很大程度上取决于驱动程序对象是什么。一种方法是您可以将“驱动程序”作为 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
推荐阅读
- excel - 根据列中的空白单元格删除整行
- python-3.x - 芹菜(4.x)延迟()没有给出所需的输出
- url - 使用 Flutter 打开带有搜索条件的网络浏览器
- python - 当我尝试在 python 脚本中访问此 JSON 文件的第一项时,为什么会出现 KeyError
- .htaccess - 带或不带最后一个字符的 RewriteRule URL
- javascript - 单击复选框时如何使用 Ajax 重新加载数据表
- css - HTML 电子邮件中的 CSS
- php - WordPress 路由之前的 Laravel 中间件
- machine-learning - 如何解释损失函数的早期突然增加,然后正常减少?
- php - 请求的资源上不存在“Access-Control-Allow-Origin”标头