zoukankan      html  css  js  c++  java
  • python 基础 5.2 类的继承

    一. 类的继承
    继承,顾名思议就知道是它的意思,举个例子说明,你现在有一个现有的A类,现在需要写一个B类,但是B类是A类的特殊版,我们就可以使用继承,B类继承A类时,B类会自动获得A类的所有属性和方法,A类称为父类,B类称为子类,子类除了继承父类的所有属性和方法,还可以自定义自己的属性和方法。大大增加了代码的复用性。
    在本章中,我们可以继承object 类,object类是所有类的父类,所有的类都默认继承object类,它是一个超级类,如果不写,默认继承object。
    继承类的格式:
    class A(父类):
    。。。。
     
    1》继承,格式
    #/usr/bin/python
    #coding=utf-8
    #@Time :2017/11/6 9:25
    #@Auther :liuzhenchuan
    #@File :类的继承.py
    # A类
    class A(object):
    pass
    #继承,只要把A 写在B 的括号里就是继承,B继承A里边的方法,先去B找,B里边没有方法在去A找
    class B(A):
    pass
     
     
    示例:
    ###子类继承。子类继承父类,从子类调用方法时,先从子类自己查找,如果子类自己有就调用自己的,如果子类没有在从父类调用那个
     
    class parent(object):
    name = 'parent'
    sex = 'F'
    def __init__(self):
    print ('my name is {0}'.format(self.name))
    def get_name(self):
    return self.name
    def get_sex(self):
    return self.sex
    print '##################打印父类方法##################'
    a = parent()
    print a.get_name()
    print a.get_sex()
     
    #定义子类child继承父类
    class child(parent):
    name = 'child'
    age = '10'
     
    #默认方法__init__()
    def __init__(self):
    print ('my name is {0}'.format(self.name))
     
    #定义子类的方法,先从子类自己查找,子类有这个方法的话直接调用,没有的话去父类找
    def get_age(self):
    return self.age
     
    #子类child 中没有get_sex 方法,从父类找
    def get_sex(self):
    return self.sex
     
    #定义子类方法
    def hello(self):
    return 'hello world'
    print '##################打印子类方法######################'
    #实例化子类
    b = child()
    print b.get_age()
    print b.get_sex()
    print b.get_name()
    print b.hello()
     
    >>>
    ##################打印父类方法##################
    my name is parent
    parent
    F
    ##################打印子类方法######################
    my name is child
    10
    F
    child
    hello world
     
     
    二.多继承
    1》 python 的类支持多继承,而java没有多继承,但是可以有多接口的实现python的多继承很简单,下面我们来看一下多继承的格式:
    class A: #定义类A
    .....................
     
    class B: #定义类B
     
     
    class C(A,B): #继承类A和B
    ...............................
    多继承其实需要在父类的位置,直接写多个父类就可以,然后用“,”分开就可以了,C 类就同时继承了A类和B类。
     
    2》python 类的继承注意事项:
    a. 在继承中,类的构造(__init__方法),不会自动调用,它需要在子类的构造中亲自调用。也就是子类需要自己写自己的__init()__方法。
     
    b. python总是首先调用子类中的方法,如果 子类中没有找到,才回去父类中查找。
     
     
    3》多继承格式
    class A(object):
    pass
    #继承,只要把A 写在B 的括号里就是继承,B继承A里边的方法,先去B找,B里边没有方法在去A找
    class B(object):
    pass
    #多继承,就是在C类里边写两个
    class C(A,B):
    pass
     
    多继承实例:
     1 class parent(object):
     2     name = 'parent'
     3     sex = 'F'
     4     coller = 'yellow'
     5     language = 'chinese'
     6     def __init__(self):
     7         print 'my name is {0}'.format(self.name)
     8     def get_sex(self):
     9         return self.name
    10 a = parent()
    11 a.get_sex()
    12 print '#'*15
    13 
    14 class child(object):
    15     name = 'child'
    16     coller = 'yellow'
    17     def __init__(self):
    18         print 'my name is {0}'.format(self.name)
    19     def get_coller(self):
    20         return self.coller
    21 b = child()
    22 print b.get_coller()
    23 print '#'*15
    24 
    25 class grandson(parent,child):
    26     name = 'grandson'
    27     def __init__(self):
    28         print 'my name is {0}'.format(self.name)
    29     def get_coller(self):
    30         return self.coller
    31     def get_language(self):
    32         return self.language
    33 c = grandson()
    34 print c.get_coller()
    35 print c.get_language()

    运行如下:

    >>>
    my name is parent
    ###############
    my name is child
    yellow
    ###############
    my name is grandson
    yellow
    chinese
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    Ibatis 使用心得
    java.net.ConnectException: Connection timed out
    ZK 最少限度加载页面js文件
    JAVA 获取网页流
    ZK 页面间参数传递
    删除 TOMCAT 上次关闭遗留下来的 SESSION 缓存
    Java 异常java.lang.IllegalArgumentException: Illegal group reference
    ZK textbox Constraint验证
    zk textbox 更改字体大小及高度
    通过http管理solrcore
  • 原文地址:https://www.cnblogs.com/lzcys8868/p/7793051.html
Copyright © 2011-2022 走看看