python------面向对象介绍之多态实例

一. 多态

一种接口,多种实现。

多态性(polymorphisn)是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。

简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。

那么,多态的作用是什么呢?我们知道,封装可以隐藏实现细节,使得代码模块化;继承可以扩展已存在的代码模块(类);它们的目的都是为了——代码重用。

而多态则是为了实现另一个目的——接口重用!多态的作用,就是为了类在继承和派生的时候,保证使用“家谱”中任一类的实例的

某一属性时的正确调用。

 

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

 1 class Animal(object):
 2     def __init__(self, name):  # Constructor of the class
 3         self.name = name
 4
 5     def talk(self):  # Abstract method, defined by convention only
 6         pass
 7         #raise NotImplementedError("Subclass must implement abstract method")
 8
 9 def animal_talk(obj):
10         obj.talk()
11
12 class Cat(Animal):
13     def talk(self):
14         print(‘%s: 喵喵喵!‘ % self.name)
15
16
17 class Dog(Animal):
18     def talk(self):
19         print(‘%s: 汪!汪!汪!‘ % self.name)
20
21
22
23 d = Dog("xiaolaozi")
24 #d.talk()
25
26 c = Cat("zhangsan")
27 #c.talk()
28
29 #以上是分别调用才可以实现一起叫,有没有一种可能用animal.talk(),一次调用让他们一起叫?
30 animal_talk(d)
31 animal_talk(c)
32 #def animal_talk(obj):
33         obj.talk()  还没有放到父类里面,还不是真正意义上的多态。用静态的方法可以放到父类里,后面再学。哈哈哈

原文地址:https://www.cnblogs.com/bltstop/p/9721436.html

时间: 2024-10-07 23:29:22

python------面向对象介绍之多态实例的相关文章

python 面向对象介绍

1.python 面向对象的主要特性.主要有类.对象.三大特点:封装.继承.多态.本次主要介绍内容:属性.方法.构造函数.析构函数.私有方法.私有属性. oop 是使用类和对象来实现对真是世界的描述.万事万物皆可为类.基于面向对象的程序使人更加容易理解的你逻辑.提高开发效率 class 类.对具有相同属性的对象的抽象.可以理解为模板.在类中定义了这些对象共同拥有的属性和方法.(上帝创造地球的模板) object 对象.对象是类的实例化.一个类可以实例化多个对象.每个对象可以具有不同的属性.例如人

Python 面向对象特性二 多态(3-7)

接口类: 继承有两种用途: 一:继承基类的方法,并且做出自己的改变或者扩展(代码重用) 二:声明某个子类兼容于某基类,定义一个接口类Interface,接口类中定义了一些接口名(就是函数名)且并未实现接口的功能,子类继承接口类,并且实现接口中的功能 在Python中是没有接口的概念的(接口是在Java里的) from abc import ABCMeta,abstractmethod#调用abc模块中的抽象方法 # 接口类 : 接口类就是一个规范 接口类一般是项目设计人员写好的 class Pa

Python 面向对象编程——类和实例

1        面向对象编程 面向对象编程: 面向对象编程--Object OrientedProgramming OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数. 面向过程的程序设计把计算机程序视为一系列的命令集合,即一组函数的顺序执行.为了简化程序设计,面向过程把函数继续切分为子函数,即把大块函数通过切割成小块函数来降低系统的复杂度. 面向对象的程序设计把计算机程序视为一组对象的集合,而每个对象都可以接收其他对象发过来的消息,并处理这些消息,计算机程序的执行就是一系列消

python 面向对象——继承与多态

Python是面向对象的编程语言,面向对象的基本单元是类 类的声明: 1 class class_name(): 2 pass 测试如下: In [1]: class c(): ...: pass ...: In [2]: a=c() In [3]: a Out[3]: <__main__.c instance at 0x07500A30> 类的继承: 1 In [4]: class base(): 2 ...: def f(self): 3 ...: print 'base' 4 ...:

Python 面向对象编程基础——初始化实例、类属性、方法

#1.初始化实例化属性.#可接受任意关键字参数,并把他们都作为属性赋值给实例.使用**kw,除了可以直接使用self.name = 'xxx'设置一个属性外,还可以通过setattr(self, 'name', 'xxx')设置属性.class Person(object):    def __init__(self, name, gender, **kw):        self.name = name        self.gender = gender        for k,v i

python面向对象中类对象、实例对象、类变量、实例变量、类方法、实例方法、静态方法

1. 类对象和实例对象 Python中一切皆对象,Python类本身也是一种对象,类定义完成后,会在当前作用域中定义一个以类名为名字的命名空间.类对象具有以下两种操作: 可以通过"类名()"的方式实例化一个对象. 可以通过"类名.类属性"的方式来访问一个类属性. 如果说类时一种概念性的定义,是一种类别,那么实例对象就是对这一类别的具体化.实例化,即实例化对象是类对象实例化之后的产物. class Person:# 声明一个类对象 pass p1 = Person()

python面向对象之继承/多态/封装

老师说,按继承/多态/封装这个顺序来讲. 子类使用父类的方法: #!/usr/bin/env python # coding:utf-8 class Vehicle: def __init__(self,name,speed,load,power): self.name = name self.speed = speed self.load = load self.power = power def run(self): print("开动啦.") class Benz(Vehicle

Python面向对象—类属性和实例属性

属性:就是属于一个对象的数据或函数元素 类有类方法.实例方法.静态方法.类数据属性(类变量)和实例数据属性(实例变量). 类属性:包括类方法和类变量,可以通过类或实例来访问,只能通过类来修改. 实例属性:包括实例方法和实例变量 class MyClass(object): name = 'Anl' def __init__(self, age): self.age = age @classmethod def class_method(cls): print "I'm class method&

oldboy 21th day. I love Python. 面向对象之封装, 多态, 继承 三大特性

一, 主要内容: 接口类:( 只是在工作中, 书写的一种规范.) 抽象类: 用处: 在工作中, 如果你要是规定几个类, 必须有一样的方法, 你要是抽象类. 封装: 1, 将一些属性或者方法 (一些有用的信息) 放置在一个空间中. 2, 私有成员的封装:私有静态变量, 私有属性, 私有方法 特点: 在变量前+__双下划线, 并且在类外面,子类访问私有变量,私有方法 是访问不到的. 因为私有成员,在运行时, 都会变成: _类名__变量名 所以你在类的外部,或者派生类中都不可访问. 有些方法, 变量,