• Python---面向对象的三大特征


    # 面向对象的三大特征

    - 继承

    - 封装

    - 多态

    # 继承

    - 子类可以使用父类定义的内容或者行为等

    - 继承的实现

      - 父类:基类,超类:被继承的类, Base Class, Super Class

      - 子类:有继承行为的类

      - 所有类都必须有一个父类

        - 如果没有,则默认为是object的子类

        - 子类可以有多个父类

    ----------------------------------------------------

    # 所有类必须有父类
    # 默认是object
    class Person1():
    pass

    class Person2(object):
    pass

    class Person():
    name = "NoName"
    age = 0

    #父类写在类定义的时候的括号里
    class Teacher(Person):
    pass

    t = Teacher()
    print(t.name)

    class Bird():
    fly = "Yes, we can"
    def flying(self):
    print("飞呀飞呀")

    class BirdMan(Person, Bird):
    pass

    bm = BirdMan()
    bm.flying()
    print(bm.name)


    #### issubclass检测是否是子类
    #### 可以用来检测两个类的父子关系

    ## 利用刚才定义的Bird, Birdman, Person, Teacher, 检测父子关系

    print(issubclass(BirdMan, Bird))
    print(issubclass(BirdMan, Person))
    print(issubclass(BirdMan, Teacher))
    --------------------------------------------------
    # 构造函数
    # 在函数实例化的时候调用的一个函数
    # 自动调用
    # 要求,第一个参数必须有,一般推荐self
    # 不能有return


    #构造函数默认继承
    class Person():
    def __init__(self, name, age):
    print("Person=({}, {})".format(name, age))

    class Teacher(Person):
    pass

    t = Teacher()
    ---------------------------------
    # 所有类必须有父类
    # 默认是object
    class Person1():
    pass

    class Person2(object):
    pass

    class Person():
    name = "NoName"
    age = 0

    #父类写在类定义的时候的括号里
    class Teacher(Person):
    pass

    t = Teacher()
    print(t.name)

    class Bird():
    fly = "Yes, we can"
    def flying(self):
    print("飞呀飞呀")

    class BirdMan(Person, Bird):
    pass

    bm = BirdMan()
    bm.flying()
    print(bm.name)

    ## help(issubclass())
    #### issubclass检测是否是子类
    #### 可以用来检测两个类的父子关系

    ## 利用刚才定义的Bird, Birdman, Person, Teacher, 检测父子关系

    print(issubclass(BirdMan, Bird))
    print(issubclass(BirdMan, Person))
    print(issubclass(BirdMan, Teacher))

    #### --------------------------------------

    ### 构造函数的继承
    ### 原则上,构造函数默认继承

    # 构造函数
    # 在函数实例化的时候调用的一个函数
    # 自动调用
    # 要求,第一个参数必须有,一般推荐self
    # 构造函数的调用时间:一般认为在实例化的时候第一个被调用
    # 一般不手动调用,实例化的时候自动调用,参数需写入类名称后面的括号中

    #构造函数默认继承
    class Person():
    def __init__(self, name, age):
    print("Person=({}, {})".format(name, age))

    class Teacher(Person):
    pass

    t = Teacher("刘大拿", 28)

    # ----------------------------
    class Bird():
    def __init__(self):
    print("我被调用了")
    return None

    b = Bird()

    # 构造函数2

    class Person():
    def __init__(self, name, age):
    print(name, age)

    p = Person("刘大拿", 19)
  • 相关阅读:
    js获取当前日期
    Mysql错误1452
    数字输入框禁止输入字母
    laravel关联外键报错
    golang for range channel
    golang实现简单哈希表(拉链法解决冲突)
    K个一组反转链表(golang)
    golang 少见的语法问题(无用)
    golang实现循环队列
    数组中连续序列和最大值(循环数组)
  • 原文地址:https://www.cnblogs.com/niaocaizhou/p/11103186.html
Copyright © 2020-2023  润新知