python - 多继承;不能从 2 个父类调用函数
问题描述
无法从 Python 3.7.2 的 Child 类中的两个不同父类调用这两个函数
我尝试调用默认构造函数以及用户定义的函数它只是从参数列表中调用第一个类函数。调用 (Parent1, Parent2) 时调用 Parent1 函数,调用 (Parent2, Parent1) 时调用 Parent2 函数。
class Parent1():
def fun1(self):
print("Fun1 from Parent1")
def fun2(self):
print("Fun2 from Parent1")
class Child1(Parent1):
def fun2(self):
print("Fun2 from Child1")
obj1 = Child1()
obj1.fun1()
obj1.fun2()
print("========Block========")
class Parent2():
def fun1(self):
print("Fun1 from Parent2")
class Child2(Parent1, Parent2):
def fun1(self):
super().fun1()
print("Fun1 from Child2")
obj2 = Child2()
obj2.fun1()
print("========Block========")
class Child3(Parent2, Parent1):
def fun1(self):
super().fun1()
print("Fun1 from Child3")
obj3 = Child3()
obj3.fun1()
print("========Block========")
class First(object):
def __init__(self):
super(First, self).__init__()
print("First")
class Second(object):
def __init__(self):
super(Second, self).__init__()
print("Second")
class Third(object):
def __init__(self):
super(Third, self).__init__()
print("Third")
Third()
解决方案
class Parent1():
def fun1(self):
print("Fun1 from Parent1")
def fun2(self):
print("Fun2 from Parent1")
class Child1(Parent1):
def fun1(self):
Parent1.fun1(self)
print("Fun2 from Child1")
class Parent2():
def fun1(self):
print("Fun1 from Parent2")
class Child2(Parent1, Parent2):
def fun1(self):
Parent1.fun1(self)
Parent2.fun1(self)
print("Fun1 from Child2")
print("========Block========")
obj1 = Child1()
obj1.fun1()
obj1.fun2()
print("========Block========")
obj2 = Child2()
obj2.fun1()
print("========Block========")
o/p
========Block========
Fun1 from Parent1
Fun2 from Child1
Fun2 from Parent1
========Block========
Fun1 from Parent1
Fun1 from Parent2
Fun1 from Child2
========Block========
推荐阅读
- python - 如何在代码执行时使日志记录出现在 Tkinter GUI 或任何文本小部件上?
- xamarin - Azure Pipelines 构建 Xamarin Forms iOS 目标是较新的 Xamarin 版本?
- php - Laravel-Backpack:结合 hasMany 和 hasManyThrough 在列表中添加子句
- javascript - 我想用蓝牙热敏打印机打印收据以响应本机
- github - Markdown中代码语法高亮语言后的`{number}`是什么意思?
- json - 错误消息:在隐式展开可选值时意外发现 nil?
- node.js - 页面重新加载后快速会话不起作用
- graphql - GraphQL 和 Apollo 中的“数据图”和“数据图平台”的确切含义是什么?
- graphql - 尝试使用 11ty 从 Strapi 发布数据时收到 403 错误
- bash - 将摄氏温度转换为华氏温度,Bash 脚本