Python大佬进来帮忙解答一个问题

查看 34|回复 4
作者:不忘初xin   
问题如下:
                A模块有个A类
                A类有X、Y、Z个方法
                Z方法中调用了Y方法,Y方法中调用了X方法。
                B模块有个B类
                B类继承了A类(A类为父类,B类为子类)
                在B类中重写了A类的X方法
                B类有W方法(W方法调用了A模块的A类中的Z方法)
结果我在B类中调用W方法时,发现最终调用的X方法还是A类的X方法,如此我在B类中重写岂不是没有意义了?
我想到的是直接在A模块中导入B模块,然后让Y方法直接调用B类的X方法,但是因为B类继承了A类(即:B模块中导入了A模块),就造成了循环导入。
有什么方法可以在B类中调用W方法时,最终调用的是B类中重写的X方法?

方法, 模块

不忘初xin
OP
  

声明:本帖所有截图中的所有信息仅作学习交流使用,无任何其他意思表示,请勿过分解读!
没代码好像确实不太容易理解我的问题,现在直接贴代码:
[color=]下面这两张图是分别是两个.py文件的代码:


[color=]最后这张图是在TestCase.py文件调用discount函数的执行情况:

[color=]我的问题是:我都在TestCase.py文件的TestLogin类中重写了platform函数,肯定是希望最后调用的是重新的函数啊(即图中绿框部分应该是:苏宁易购、天猫选项,而不是原来的京东、淘宝选项)
[color=]所有如何实现最后调用的时候调用的是
重写了platform函数?
grekevin   

建议把你自己的代码贴出来,看看你的问题出在哪里?
lisongmei   

在运行时改变A类X为B类的X。代码:
A.X = B.X
大致意思应该是A类中 Z调Y,Y调Z是写死的,不是用self.X来调用的,所以不管子类怎么重写,都是调的A.X。所以在执行调用之前给A类的X重新赋值为B.X。
lisongmei   


lisongmei 发表于 2025-6-10 14:01
在运行时改变A类X为B类的X。代码:
A.X = B.X
大致意思应该是A类中 Z调Y,Y调Z是写死的,不是用self.X来 ...

代码模拟
[Python] 纯文本查看 复制代码class A:
        def x(self):
                print("A.X")
        def y(self):
                A.x(self)
                print("A.y")
        def z(self):
                A.y(self)
                print("A.Z")
class B(A):
        def x(self):
                print("b.X")
        def w(self):
                A.x=B.x
                A.z(self)
b=B()
b.w()
您需要登录后才可以回帖 登录 | 立即注册