多态 一种事物具备不同的形态 例如:水 --> 固态.液态.气态 多态:# 多个不同对象可以相应同一个对象,产生不同的结果 首先强调,多态不是一种特殊的语法,而是一种状态,特性(多个不同对象可以相应同一个方法,长身不同的结果) 好处:对于使用者而言,使用成本降低 ​ 之前的USB接口下的鼠标,键盘,就属于多态 接口抽象类 鸭子类型都可以写出具备多态的代码(最简单的就是鸭子类型) ''' 要管理 鸡 鸭 鹅 如何能够最方便的管理,就是我说同一句话,他们都能理解 他们拥有相同的方法 ''' clas…
多态与多态性 一,多态 1,多态指的是一类事物有多种形态(python里面原生多态) 1.1动物有多种形态:人,狗,猪 import abc class Animal(metaclass=abc.ABCMeta): #同一类事物:动物 @abc.abstractmethod def talk(self): pass class People(Animal): #动物的形态之一:人 def talk(self): print('say hello') class Dog(Animal): #动物的…
一.面向对象之多态 1.多态:简而言子就是多种形态或多种类型 python中不支持多态也用不到多态,多态的概念是应用与java/C#中指定传参的数据类型, java多态传参:必须是传参数的数据类型或传参的子类类型 面向对象总结: 面向对象是一种编程方式,此编程方式的实现是基于类和对象的使用 类:是一个模板,模板中包含了多个函数共使用,即类中可包含多个函数(类中的函数即叫做方法) 一般疑问: 1)什么样的代码才是面向对象? 简单来说,如果程序中的所有功能否是由 “类”和“对象”实现,那么就是面向对…
面向对象-组合 1.什么是组合 组合指的是某一个对象拥有一个属性,该属性的值是另外一个类的对象 class Foo: xxx = 111 class Bar: yyy = 222 obj = Foo() obj.attr = Bar() print(obj.xxx) >>>111 print(obj.attr.yyy) >>>222 2.为何要用组合 通过为某一个对象添加属性(属性的值是另外一个类的对象)的方式,可以间接地将两个类关联/整合/组合到一起 从而减少类与类之…
面向对象设计中最基础的3个概念:数据封装.继承和多态 动态给class增加功能 正常情况下,当定义了一个class,然后创建了一个class的实例后,可以在程序运行的过程中给该实例绑定任何属性和方法,这就是动态语言的灵活性. (1)给一个实例绑定的方法,对另一个实例是不起作用的. (2)为了给所有实例都绑定方法,可以给class绑定方法. Student.set_age=set_age 注:是set_age,而不是set_age(  ) (3) 给class绑定方法后,所有实例均可调用. #定义…
一.多态 超过一个子类继承父类,出现了多种的形态. 例如,动物种类出现了多种形态,比如猫.狗.猪 class Animal:pass class Cat(Animal):pass class Dog(Animal):pass class Pig(Animal):pass Python是处处有多态,因为新式类都是继承object 多态的定义:一个类表现出的多种形态,通过继承来实现,一个父类有多个子类.再简化的说法就是“有多种形式”,就算不知道变量(参数)所引用的对象类型,也一样能进行操作,来者不拒…
多态 面向对象三大特性 封装 根据职责将属性和方法封装到一个抽象的类中:--定义类的准则 继承 实现代码的重用,相同的代码不需要重复的编写:--设计类的技巧:子类针对自己的需求,编写特定的代码: 多态 不同的子类对象调用相同的父类方法,产生不同的执行结果:-- 多态可以增加代码的灵活度: 以继承和重写父类方法为前提: 是调用方法的技巧,不会影响到类的内部设计: 例如同样是人类,就有医生和教师的工作职别. 多态案例演练 需求:在Dog类中封装方法game,普通狗类只是简单的玩耍: 定义军犬类继承自…
一.多态 多态性(polymorphisn)是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作,简单的说就是一句话:允许将子类类型的指针赋值给父类类型的指针. 那么,多态的作用是什么呢?我们知道,封装可以隐藏实现细节,使得代码模块化:继承可以扩展已存在的代码模块(类):他们的目的都是为了--代码重用.而多态则是为了实现另一个目的--接口重用:多态的作用,就是为了类在继承和派生的时候,保证使用“家谱“中任一类的实例的某一…
静态方法:只是名义上归类管理,实际上在静态方法里访问不了类或实例中的任何属性. 在类中方法定义前添加@staticmethod,该方法就与类中的其他(属性,方法)没有关系,不能通过实例化类调用方法使用类变量,只能单纯的使用方法本身. class dog(object): def __init__(self,name): self.name=name def eat(self,food): print '%s吃%s'%(self.name,food) a=['q','a','z'] for i i…
isinstance:判断一个对象是否是某个类的实例 参数一:要判断的对象 参数二:要判断的类型 issubclass:判断一个类是否是另一个类的子类 参数一:是待判断的子类 参数二:待判断的父类 __new__: 主要作用: 1.new方法主要继承一些不可变的class时(int,str,tuple...),提供给你一个自定义这些类的实例化过程的途径 2.new方法用来实现自定义的metaclass new方法被定义为静态类,并且至少需要传递一个参数cls,cls表示需要实例化的类,在创建实例…