说的有点抽象,下面用 selenium 模块举个例子。
在remote/webdriver.py文件中有下面一个类,为标题说的关键类。
class WebDriver(object):
    pass
在chrome/webdriver.py文件中,依赖上述关键类,称这个文件为依赖关键类的文件,其内容如下。
#...
from selenium.webdriver.remote.webdriver import WebDriver as RemoteWebDriver
#...
class WebDriver(RemoteWebDriver):
    pass
现在,我想重写关键类。并且,依赖关键类的文件的文件会自动调用我重写的类,基本要求是不改动模块文件。
不知列位有没有看懂,我尽力表达了... 各位 v 友,有招嘛,不懂得但是对这个问题有兴趣的可以回一下贴,顶一下,让大佬看到😁,感谢感谢~
|  |      1pursuer      2021-07-13 19:05:53 +08:00 修改 sys.path 或者 sys.meta_path,让 import 优先加载你自己写的 py 文件 | 
|      2renmu123      2021-07-13 19:21:03 +08:00 via Android  1 猴子补丁? | 
|  |      3wuwukai007      2021-07-13 19:29:51 +08:00 chrom/__init__.py class MyWebDriver: pass from selenium.webdriver.remote import webdriver webdriver.WebDriver = MyWebDriver | 
|  |      4muzuiget      2021-07-13 21:59:53 +08:00 就是 monkey patch 大法,很正常的操作。 | 
|      5lanlanye      2021-07-14 10:10:30 +08:00 如果依赖关键类的文件都是你自己写的,改个名字就可以了,否则就按楼上的来 | 
|      6crclz      2021-07-14 11:51:45 +08:00 在自己的工程中,叫依赖注入。注意子类要能够里氏替换。 |