封装、继承与多态知识回顾

封装、继承与多态知识回顾

封装

基本概念

  • 把一些数据封装成一个列表——数据封装
  • 将一些代码语句封装成一个函数方便调用——代码的封装
  • 将数据和代码封装在一起。用术语表示的话,就是可以将属性和方法进行封装,从而得到对象

实例验证

  • 定义一个类,这个类中有属性和方法
class Xiaoming():#类
    #属性
    height = 180
    weight = 75
    sex = "男"

    #方法
    def run(self):
        print("小明在跑步")

    def sleep(self):
        print("小明在睡觉")

  • 在类定义完成时就创建了一个类对象,它是对类定义创建的命名空间进行了一个包装。类对象支持两种操作:属性引用实例化

  • 属性引用的语法就是一般的标准语法:obj.name。比如XiaoMing.height和XiaoMing.run就是属性引用,前者会返回一条数据,而后者会返回一个方法对象

#魔法方法_init_

  • 类在实例化过程中并不都是像上面例子一样简单的,一般类都会倾向将实例对象创建为有初始状态的,所以在类中可能会定义一个__init__的魔法方法,这个方法就可以帮助接收、传入参数。

  • 而一个类如果定义了__init__方法,那么在类对象实例化的过程中就会自动为新创建的实例化对象调用__init__方法

继承

基本概念

  • 所谓继承就是一个新类在另一个类的基础上构建而成,这个新类被称作子类或者派生类,而另一个类被称作父类、基类或者超类,而子类会继承父类中已有的一些属性和方法。

    class Mylist(list): #list难道不是一个参数吗?,这样说吧list本来也就是一个类所以继承问题本身也是就是一个嵌套的问题,就始终牢记什么int啊、list都是一个个的类,牢记该概念
        pass
    list_ = Mylist()
    list_.append(7)
    print(list_)
    
  • 比如上面这个例子,我并没有将list_定义成一个列表,但它却能调用append方法。原因是类Mylist继承于list这个基类,而list_又是Mylist的一个实例化对象,所以list_也会拥有父类list拥有的方法

class Parent():
    def par(self):
        print("父类方法")

class Child(Parent):
    pass
child = Child()
child.par()
'''
父类方法
'''

覆盖

当子类中定义了与父类中同名的方法或者属性,则会自动覆盖父类对应的方法或属性.

class Parent:
    def par(self):
        print('父类方法')
class Child(Parent):
    def par(self):
        print('子类方法')
child = Child()
child.par()
'''
子类方法
'''

多态

多态比较简单,比如定义两个类,这两个类没有任何关系,只是两个类中有同名的方法,而当两个类的实例对象分别调用这个方法时,不同类的实例对象调用的方法也是不同的

posted @ 2022-01-11 17:26  小杨的冥想课  阅读(34)  评论(0编辑  收藏  举报