封装、继承与多态知识回顾
封装、继承与多态知识回顾
封装
基本概念
- 把一些数据封装成一个列表——数据封装
- 将一些代码语句封装成一个函数方便调用——代码的封装
- 将数据和代码封装在一起。用术语表示的话,就是可以将属性和方法进行封装,从而得到对象
实例验证
- 定义一个类,这个类中有属性和方法
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()
'''
子类方法
'''
多态
多态比较简单,比如定义两个类,这两个类没有任何关系,只是两个类中有同名的方法,而当两个类的实例对象分别调用这个方法时,不同类的实例对象调用的方法也是不同的
记录学习的点点滴滴