• 类的继承


    # 1.继承与抽象
    # 抽取老师和学生中相同的部分形成person类

    class Person:
    def __init__(self, name, age, gender):
    self.name = name
    self.age = age
    self.gender = gender

    def say_hi(self):
    print("name:%s,gender:%s,age:%s" % (self.name, self.gender, self.age))


    class Teacher(Person): # 继承person类
    def teaching(self):
    print("老师教学生,写代码....")


    t1 = Teacher("jack", "male", 20)
    t1.say_hi()


    class Student(Person):
    pass


    stu1 = Student("rose", "female", 18)
    stu1.say_hi()

    # 2.属性的查找顺序
    # 对象自己的 - > 所在类中 -> 找父类 - >父类的父类 ->Object(到这一步时会报错,因为object存在与源代码之中,此时属性为空)
    # type ctrl加右键查看它的源码你就明白了

    # 3.派生与覆盖是继承
    这两个是继承的两种情况

    # 4.元素类型限制
    """
    需求 实现一个能够限制元素类型的列表类

    """
    class MyList(list):
    def __init__(self,element_type):
    super().__init__() # 调用父类的初始化方法 来完成基本的初始化
    self.element_type = element_type

    def append(self, object):
    """
    :param object: 是要存储的元素
    :return: 没有
    """
    if type(object) == self.element_type:
    #我们需要在这里访问父类的append函数来完成真正的存储操作
    super(MyList,self).append(object)
    else:
    print("sorry sir, you element type not is %s" % self.element_type)


    # 创建是指定要存储的元素类型
    m = MyList(int)
    # 当你有需求,是需要在创建对象时 干点什么事儿 那就该想到初始化方法

    m.append(1)
    print(m[0])
    m.append("121212")

    #4.字类访问父类
    class Parent:
    text = "abc"

    def say_something(self):
    print("anything")

    class Sub(Parent):

    def show_info(self):
    # print(super(Sub,self).text)
    # super(Sub,self).say_something()

    # 访问方式2 py3的新语法 最常用的方式
    print(super().text)
    super().say_something()

    #方式3 直接指定类名调用
    # print(Parent.text)
    # Parent.say_something(self)


    # sub = Sub()
    # sub.show_info()

    # 5.初始化方法中的父类采用super()
    class Person:
    def __init__(self,name,gender,age,*args):
    self.name = name
    self.gender = gender
    self.age = age
    self.aa()

    def aa(self):
    print("aa run")


    def say_hi(self):
    print("name:%s ,gender:%s,age:%s" % (self.name,self.gender,self.age))


    class Student(Person):

    def __init__(self,name,gender,age,number):
    super().__init__(name,gender,age)
    self.number= number

    def say_hi(self):
    super().say_hi()
    print("numnber:%s" % self.number)

    stu = Student("rose","mael",20,"old01")
    stu.say_hi()

    # 6.组合
    class Phone:
    def __init__(self,price,kind,color):
    self.price = price
    self.kind = kind
    self.color = color

    def call(self):
    print("正在呼叫XXXX;")

    def send_message(self):
    print("正在发送短信....")


    class Student:
    def __init__(self,name,gender,phone):
    self.name = name
    self.gender = gender
    self.phone = phone

    def show_info(self):
    print("name:%s gender:%s" % (self.name,self.gender))

    phone = Phone(1000,"apple","red")

    stu1 = Student("rose","male",phone)
    stu1.phone.call()

    # 9.菱形继承(了解)
    # py3 中是广域查找
    # py2 中是深度查找
    # py3中所有的类都是继承了源码中object的类,新式类
    # py2中所有的类都不是继承源码中object的的类,旧式类
  • 相关阅读:
    Android 如何在自己的应用中模拟Home键
    ComboBox添加Item
    修复JSCRIPT
    几天没用TFS!挂了!
    简单的上传图片并生成缩略图
    上传图片时中文路径的问题
    获取DataList和Repeater里的控件
    MIME 类型列表
    STL注意
    MFC下的MessageBox使用_附带CBUTTON
  • 原文地址:https://www.cnblogs.com/night-rain/p/11247682.html
Copyright © 2020-2023  润新知