python函数多态 python的多态性( 三 )


May.print_title()# 可使用上上层父类的方法
class Child(Person):
def print_title(self):
if self.sex == "male":
print("boy")
elif self.sex == "female":
print("girl")
class Baby(Child):
pass
May = Baby("May","female")
May.print_title()# 优先使用上层类的方法
Python中的面向对象(高级)之私有方法、多继承、多态 特征:私有属性与私有方法不能从外部被调用 , 也不能被子类继承
唯一写法:在属性或方法前面加上__(两个下划线)
我们写一个简单的例子,创建一个类,包含私有方法、私有属性、普通方法、普通属性,并生成一个实例
私有属性和私有方法可以从内部被调用(总不能我写了 , 但是哪都不让用吧)
我们试试在类里再加入一个新的方法,调用私有方法和属性
可以看到,私有属性和私有方法是可以在类内部被调用的 。
举个私有属性应用场景的例子
二 。object类
我们试一下
三 。多继承
一个子类可以继承多个父类,用逗号隔开
多个父类中有同名方法时,按照继承顺序进行调用
四 。多态
当不同的实例,有同名的方法时,我们可以一个函数,传入不同的实例,执行对应的方法 。
我们定义一个猫和一个狗的类,两个类中都有'叫'的方法 。并各生成一个实例 。
定义一个函数,用函数来调用'叫'的方法
这就叫多态 。
python的三大特征第一点:封装
隐藏对象的属性和实现细节 , 仅对外提供公共访问方式 , 在Python中用双下线开头的方式将属性设置成私有的 。
拥有三个好处:将变化隔离,便于使用,提高复用性,提高安全性 。
第二点:继承
继承是一种创建新类的方式 , 在Python中,新建的类可以继承一个或多个父类,父类又被称为基类或超类,新建的类称为派生类或子类 。即一个派生类继承基类的字段和方法,继承也允许把一个派生类的对象作为一个基类对象对待 。
第三点:多态
一种事物的多种体现形式 , 函数的重写其实就是多态的一种体现 。Python中,多态指是父类的引用指向子类的对象 。
实现多态的步骤:
1. 定义新的子类;
2. 重写对应的父类方法;
3. 使用子类的方法直接处理,不调用父类的方法;
多态的好处:
1. 增加了程序的灵活性;
2. 增加了程序的可扩展性 。
Python中的多态?times函数为例谈谈多态,就像我们看到的那样,times函数中表达式×*y的意义完全取决于x和y的对象类型,同样的函数,在一个实例下执行的是乘法,在另一个实例下执行的却是重复 。Python把对某一对象在某种语法下的合理性交给那个对象自身来判断 。实际上,*作为一个分派机制 , 将执行的控制权移交给被处理的对象 。
这种依赖类型的行为称为多态,其含义就是一个操作的意义取决于被操作对象的类型 。因为Python是动态类型语言,所以多态在Python中随处可见 。事实上,在 Python中所有操作都是多态的操作:print、index、*运算符,以及更多 。这实际上是有意而为的,并且从很大程度上算作是这门语言简洁性和灵活性的一个表现 。例如,函数可以自动地应用到所有类别的对象上 。只要对象支持所预期的接口(也称为协议) , 函数就能处理它们 。也就是说,如果传给函数的对象支持预期的方法和表达式运算符,那么它们对函数的逻辑来说就是有着即插即用的兼容性 。
即使是简单的times 函数,对任意两个支持*的对象都可以执行,无论它是哪种类型 , 也不管它是何时编写的 。这个函数对于数字来说是有效的(执行乘法),或者一个字符串和一个数字(执行重复),或者任意其他支持扩展接口的兼容对象——甚至是我们尚未编写过的基于类的对象 。

推荐阅读