python 带参数的多重继承

简介:

1. 不带参数的多重继承

# 作者:hhh5460
# 时间:2017.07.18

class A(object):
    def show_x(self):
        print('A')
        
        
class B(object):
    def show_y(self):
        print('B')
        
        
class C(object):
    def show_z(self):
        print('C')
        
        
class D(A, B, C):
    pass
        
        
# 测试
if __name__ == '__main__':
    d = D()
    d.show_x() # A
    d.show_y() # B
    d.show_z() # C

2. 带参数的多重继承

# 作者:hhh5460
# 时间:2017.07.18

class A(object):
    def __init__(self, x=0):
        self._x = x
    
    def show_x(self):
        print(self._x)
        
    def show_name(self):
        print('A')
        
        
class B(object):
    def __init__(self, y=0):
        self._y = y
    
    def show_y(self):
        print(self._y)
        
    def show_name(self):
        print('B')
        
        
class C(object):
    def __init__(self, z=0):
        self._z = z
    
    def show_z(self):
        print(self._z)
        
    def show_name(self):
        print('C')
        
# 注意下面两类D、E,都是继承A、B、C,且A类的优先级最高。但是三条__init__语句的顺序是相反的
class D(A, B, C):
    def __init__(self, x=0, y=0, z=0):
        C.__init__(self, z) # init C
        B.__init__(self, y) # init B
        A.__init__(self, x) # init A (A最优先)
        
class E(A, B, C):
    def __init__(self, x=0, y=0, z=0):
        super(E, self).__init__(x) # init A (A最优先)  # 此句可简写成:super().__init__(x)
        super(A, self).__init__(y) # init B
        super(B, self).__init__(z) # init C
        
        
        
# 测试
if __name__ == '__main__':
    d = D(1,2,3)
    d.show_x()    # 1
    d.show_y()    # 2
    d.show_z()    # 3
    d.show_name() # A
    
    e = E(1,2,3)
    e.show_x()    # 1
    e.show_y()    # 2
    e.show_z()    # 3
    e.show_name() # A
本文转自罗兵博客园博客,原文链接:http://www.cnblogs.com/hhh5460/p/7198551.html ,如需转载请自行联系原作者
相关文章
|
6天前
|
Python
python函数的参数学习
学习Python函数参数涉及五个方面:1) 位置参数按顺序传递,如`func(1, 2, 3)`;2) 关键字参数通过名称传值,如`func(a=1, b=2, c=3)`;3) 默认参数设定默认值,如`func(a, b, c=0)`;4) 可变参数用*和**接收任意数量的位置和关键字参数,如`func(1, 2, 3, a=4, b=5, c=6)`;5) 参数组合结合不同类型的参数,如`func(1, 2, 3, a=4, b=5, c=6)`。
11 1
|
1月前
|
Python
Python传参数:传值还是传址?
【2月更文挑战第18天】
46 6
|
5月前
|
Python
Python函数的参数学习
Python函数的参数学习
|
4月前
|
Python
Python解包参数列表及 Lambda 表达式
Python解包参数列表及 Lambda 表达式
|
1天前
05-python之函数-函数的定义/函数的参数/函数返回值/函数说明文档/函数的嵌套使用/函数变量的作用域
05-python之函数-函数的定义/函数的参数/函数返回值/函数说明文档/函数的嵌套使用/函数变量的作用域
|
26天前
|
算法 开发者 Python
【Python 基础扫盲 】self参数、__init__方法和.__str__方法的用处和区别?
【Python 基础扫盲 】self参数、__init__方法和.__str__方法的用处和区别?
20 0
C4.
|
1月前
|
Python
Python函数的参数
Python函数的参数
C4.
26 1
|
1月前
|
机器学习/深度学习 算法 计算机视觉
python机器学习超参数调优
超参数(hyper parameters)就是机器学习或深度学习算法中需要预先设置的参数,这些参数不是通过训练数据学习到的参数;原始算法一般只给出超参数的取值范围和含义,根据不同的应用场景,同一个算法的同一超参数设置也不同。【2月更文挑战第14天】
63 0
|
3月前
|
Python
python 函数参数验证器 pyparamvalidate
python 函数参数验证器 pyparamvalidate
36 1

热门文章

最新文章