一,接口类 继承有两种用途: 一:继承基类的方法,并且做出自己的改变或者扩展(代码重用) 二:声明某个子类兼容于某基类,定义一个接口类Interface,接口类中定义了一些接口名(就是函数名)且并未实现接口的功能,子类继承接口类,并且实现接口中的功能 开发中容易出现的问题 class Alipay: ''' 支付宝支付 ''' def pay(self,money): print('支付宝支付了%s元'%money) class Applepay: ''' apple pay支付 ''' def…
一.抽象类与接口类 1.抽象类:抽象即类似或者说比较像的部分,继承描述的是父类与子类的一种关系,要找出这种关系,必须先抽象再继承; a:抽象分成两个层次: 1)由对象->类:将两个有相似地方的对象抽取成类; 2)由类->父类:将两个有相似地方的类抽取成父类; :抽象最主要的作用就是划分类别(可以隔离关注点,降低复杂度) 2.为什么要有抽象类 与Java一样,Python也有抽象类的概念,需要借助模块实现,它是一个特殊的类,特殊之处在于只能被继承,不能被实例化; 类是从一些对象中抽取相同的内容而…
面向对象 一:面向对象初级 1.思考:首先在python中,以前我们以前用到的几乎都是函数式编程,但是有时候函数式编程其中代码重复利用率太高,我们往往会把这些重复代码写进一个函数日后去调用,所以呢,今天所将的面向对象将使我们学习到面向对象编程,面向对象对函数进行封装和分类,让开发变得更快更好,什么是面向对象? Python中通过使用类(class)和对象(object)来实现面向对象(object-oriented programming,简称OOP)的编程. 面向对象编程的最主要目的是提高程序…
一,组合 组合指的是,在一个类中以另外一个类的对象作为数据属性,称为类的组合      人类装备了武器类就是组合 1.圆环,将圆类实例后传给圆环类 #!/usr/bin/env python #_*_coding:utf-8_*_ #circle,圆类 from math import pi class Circle: def __init__(self,radius): self.radius = radius def perimeter(self): return 2 * pi * self…
一,封装 [封装] 隐藏对象的属性和实现细节,仅对外提供公共访问方式. [好处] 1. 将变化隔离: 2. 便于使用: 3. 提高复用性: 4. 提高安全性: [封装原则] 1. 将不需要对外提供的内容都隐藏起来: 2. 把属性都隐藏,提供公共方法对其访问. 私有变量和私有方法 在python中用双下划线开头的方式将属性隐藏起来(设置成私有的) 私有变量 #其实这仅仅这是一种变形操作 #类中所有双下划线开头的名称如__x都会自动变形成:_类名__x的形式: class A: __N=0 #类的数…
一.成员修饰符 共有成员 私有成员, __字段名 - 无法直接访问,只能间接访问 1.     私有成员 1.1  普通方法种的私有成员 class Foo: def __init__(self, name, age): self.name = name # self.age = age self.__age = age #__age前面加上__就表示私有成员,不能直接访问,只能间接访问 2个下划线 __字段名 就表示私有成员了 obj = Foo("sang",20) obj.nam…
一,通过函数写人狗大战这个故事 #!/usr/bin/env python #_*_coding:utf-8_*_ #1.函数 人模子 def person(name,level,life_value): p_dic = { 'name':name, 'level':level, 'life_value':life_value } return p_dic joker = person('joker',100,4000) #函数 狗模子 def dog(name,breed,live_value…
归一化设计: 不管是哪一个类的对象,都调用同一个函数去完成相似的功能. class Alipay: def pay(self,money): print('使用支付宝支付了%s' % money) class QQpay: def pay(self,money): print('使用QQ支付了%s元' % money) def pay(way,money): # 以上两个类都使用了pay方法去完成相似的功能, way.pay(money) # 所以可定义一个***相同的函数名***来完成这个功能…
Python面向对象之接口类(抽象类):就是制定一个规范. 比如定义了一个接口类(抽象类)(他们是不可以进行实例化的,这就是他为什么是制定一个规范的原因). 他的定义是需要abc模块,要变的就是他的方法,比如下面的pay方法, 定义好一个抽象类(接口类)Payment,他用装饰器@abstractmethod将pay方法装饰 这样,其他类如果都继承了Payment方法,其他类中就都需要有一个pay方法,如果没有就会报错. 就好比,起初我没有微信支付类,但是如果后续项目需要加微信支付此功能,支付的…
简单来说:多态就是指一个相同的方法名在不同的对象调用的时候实现一样或者不一样的方法实例1: 动物类有个方法 "嚎叫" 狗类也有个方法 "嚎叫" 猫类继承了动物类也可以调用 "嚎叫" 狗调用"嚎叫"和猫调用"嚎叫"有什么区别呢? 有区别: 两个嚎叫的内存地址是不一致的, 实现效果也会根据各自的定义不一致而实现效果不同 当然你如果定义了相同的实现效果可以实现一致 但是这并不影响猫类还是狗类都可以调用"…