python多态的概念_Python 多态

Python 多态

一、多态

概念

允许将父对象设置成和一个或多个的他的子对象相等技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特征以不同的方式运作。简单来说:就是允许将子类型的指针赋值给父类类型指针

作用

接口重用

为了类在继承和派生的时候,保证使用"家谱"中任一类的实例的某一属性时的正确调用

Pyhon 很多语法都是支持多态的.比如 len(), sorted()。 你给len传字符串就返回字符串的长度。 传列表就返回列表长度

class Animal(object):

def __init__(self, name): # Constructor of the class

self.name = name

def talk(self): # Abstract method, defined by convention only

raise NotImplementedError("Subclass must implement abstract method")

class Cat(Animal):

def talk(self):

return "Neow!"

class Dog(Animal):

def talk(self):

return "Woof!...Woof!"

D = Dog("D1")

C = Cat("C1")

def Animal_talk(obj):# 一个接口.多种形态.

print(obj.talk())

Animal_talk(D)

Animal_talk(C)

总结:

面向对象三大特性及作用

1.封装 - 隐藏实现细节,使得代码模块化。

2.继承 - 扩展已存在的代码模块(类),它们的目的都是为了"代码重用"

3.多态 - 接口重用。类在继承和派生的时候,保证使用"家谱"中任一类的实例的某一属性时的正确调用

面向对象是一种编程方式,此编程方式的实现是基于对 "类" 和 "对象" 的使用.

类 是一个模板.模板中包装了多个"函数"供使用.

对象 根据模板创建的实例(即:对象).实例用于调用被包装在类中的函数.

面向对象三大特性:封装、继承和多态.

一:什么样的代码才是面向对象 ?

从简单来说:如果程序中的所有功能都是用 "类" 和 "对象" 来实现,那么就是面向对象编程了

二:函数式编程 和 面向对象 如何选择? 分别在什么情况下使用?

Python语言同时支持两种编程方式: 且函数式编程能完成的操作,面向对象都可以实现,而面向对象的能完成的操作,函数式编程不行(函数式编程无法实现面向对象的封装功能)。

所以:一般在Python开发中,全部使用面向对象 或 面向对象和函数式混合使用.

三:类和对象在内存中是如何保存 ?

类以及类中的方法在内存中只有一份.而根据类创建的每一个对象都在内存中需要存一份.大致如下图:

1516808-20190113204113014-691055498.png

如上图所示:根据类创建对象时.对象中除了封装 name 和 age 的值之外.还会保存一个类对象指针.该值指向当前对象的类.

当通过 obj1 执行 【方法一】 时.过程如下:

根据当前对象中的 类对象指针 找到类中的方法

将对象 obj1 当作参数传给 方法的第一个参数 self

ContractedBlock.gif

ExpandedBlockStart.gif

1 面向对象好处:2 更容易扩展、提高代码使用效率. 使你的代码组织性更强. 更清晰更适合复杂项目的开发3 封装:4 把功能的实现细节 封装起来. 只暴露调用接口5 继承:6 子承父业7 多态:8 接口继承9

10 定义:11 类 :相当于是模版12 对象:实例化的类13

14 属性:15 私有属性:__private16 公有属性:存在类的内存里. 所有实例共享17 成员属性:实例变量18 方法:19 类中函数20 构造函数:21 def __init__(self):22 析构函数:23 def __del__(self):24 新式类:25 object

26 super(Myclass,slef).__init__()27 多继承 继承路径28 =广度优先29 经典类:30 classDog:31 p_class.__init__(self,....)32 == 深度优先.

知识点回顾

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值