来自this question的跟进,其配方不是很好。答案提供了一些额外的见解,所以现在我构建了一个有限的工作示例,可以更好地解释它。
基本上我们有两个子类A
和B
以及一个继承自两者的类C
。类A
和B
都有一个函数MyFunc
,但它会执行不同的操作。
我希望类C
能够使用这两个函数并完全控制调用哪个函数,因为我希望对每个函数执行不同的操作。下面有限的工作示例中的评论显示了我想要做的事情。
class A():
def __init__(self, var1, var2):
self.var1 = var1
self.var2 = var2
def MyFunc(self):
result = self.var1 + self.var2
return result
class B():
def __init__(self, var1):
self.var1 = var1
def MyFunc(self):
result = self.var1**2
return result
class C(A,B):
def __init__(self, var1, var2, var3):
A.__init__(self, var1, var2)
B.__init__(self, var3)
def MyFunc(self):
#in this function I want to call MyFunc from A and MyFunc from B. For example to add their results together
如何在MyFunc
中的A
中MyFunc
和B
中MyFunc
中的C
拨打GoogleSignInAccount signInAccount = GoogleSignIn.getLastSignedInAccount(GoogleDriveActivity.this);
DriveClient mDriveClient = Drive.getDriveClient(getApplicationContext(), signInAccount);
DriveResourceClient mDriveResourceClient = Drive.getDriveResourceClient(getApplicationContext(), signInAccount);
?
由于
答案 0 :(得分:2)
您可以使用名称修改来创建子类中可用类的属性,即使该子类定义了具有相同名称的属性。
class A():
def __init__(self, var1, var2):
self.var1 = var1
self.var2 = var2
def __MyFunc(self):
result = self.var1 + self.var2
return result
MyFunc = __MyFunc
class B():
def __init__(self, var1):
self.var1 = var1
def __MyFunc(self):
result = self.var1**2
return result
MyFunc = __MyFunc
class C(A,B):
def __init__(self, var1, var2, var3):
A.__init__(self, var1, var2)
B.__init__(self, var3)
def MyFunc(self):
return self._A__MyFunc() + self._B__MyFunc()
c = C(1, 2, 3)
print(c.MyFunc())
# 14
答案 1 :(得分:0)
我尝试使用您的示例建议尽可能简化解决方案。
def MyFunc(self):
result = 0
result += A.MyFunc(self=self)
result += B.MyFunc(self=self)
return result