从方法创建的 class 实例覆盖嵌套 class 的方法

Override method of nested class from method-created class instance

我正在使用 Python Docker SDK 向我的本地 docker 安装发送命令。

client = docker.from_env()
client.images.pull(repository=MY_IMAGE, tag="master")

我想做的是重写 .pull 方法,这样我就可以添加一个选项,这样它在某些情况下就不会拉。

最简单的方法是在每个 .pull

之前添加一个 if 语句
enable_pull=True

if enable_pull:
    client.images.pull(...)
else:
    pass

...但我想按原样保留代码,只是以某种方式重写该方法。我知道如何为“正常”配置执行此操作 - 例如覆盖 from_env() 很容易:

class MyClass(docker):
    def from_env(self, *args, **kwargs):
        # my code
        return super().from_env()

但是我不知道如何覆盖 .pull 因为它是 .images.

的方法

你这里有点train-wreck:(放大说明)

docker.from_env().images.pull(repository=MY_IMAGE, tag="master")

所以像这样的东西应该隐藏在你自己的方法之一中:

def pull(self, *args, **kwargs):
    docker.from_env().images.pull(*args, **kwargs)

并这样调用:

self.pull(repository=MY_IMAGE, tag="master")

但你想要 enable/disable,所以:

def pull(self, *args, **kwargs):
    if self.enable_pull:
        docker.from_env().images.pull(*args, **kwargs)