使用inheritan重新定义“子类”类型的结构

2024-04-24 19:59:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在开发一个面向对象的应用程序,它与下面的有限工作示例非常相似。我正在开办两个超级班。类A和类B。类A定义变量var1var2,并包含方法AddMultiplyPower。类B定义变量var1var2,并包含方法SubtractDivideAdd。你知道吗

C实例化类A和类B的实例。然后它定义了一个方法f1,该方法使用来自A_objB_obj的具有不同名称的方法。注意,方法f2使用的是来自A_objB_obj的方法Add。方法具有相同的名称,但执行不同的计算。你知道吗

最后几行代码实例化了类C的对象,然后使用这两个函数打印出结果。你知道吗

class A():
    def __init__(self, var1, var2):
        self.var1 = var1
        self.var2 = var2
    def Add(self):
        result = self.var1 + self.var2
        return result
    def Multiply(self):
        result = self.var1*self.var2
        return result
    def Power(self):
        result = self.var1**self.var2

class B():
    def __init__(self, var1, var2):
        self.var1 = var1
        self.var2 = var2
    def Subtract(self):
        result = self.var1-self.var2
        return result
    def Divide(self):
        result = self.var1/self.var2
        return result
    def Add(self):
        result = self.var1+self.var2+self.var1+self.var2
        return result
class C():
    def __init__(self, var1, var2, var3, var4):
        self.A_obj = A(var1,var2)
        self.B_obj = B(var3,var4)
    def f1(self):
        result = self.A_obj.Add()+self.B_obj.Subtract()
        return result
    def f2(self):
        result = self.A_obj.Add()-self.B_obj.Add()
        return result
C_obj = C(1, 2, 3,4)

print(C_obj.f1())
print(C_obj.f2())

我的问题是,我能用继承来实现这种功能吗?继承在这里使用是否合适?我尝试在previous question中强制使用它,但发现一旦在子类C中使用继承变量,它就会变成“全局定义的”,并被超类AB识别。我想确保类A中的所有内容都保持本地到A,类B中的所有内容都保持本地到B。你知道吗


Tags: 实例方法selfaddobjreturn定义def