python 接口类和抽象类

为什么讲封装之前要将这个东西? 我才不会说为什么

首先:

  python没有接口类这个概念!!!!!!!!

哈哈哈......神经病

python抽象类和接口类更接近于一种规范,例如,我吃苹果,吃香蕉,吃梨,这些我都可以统一归到吃水果这个类中,但是我能吃到这个水果吗?????  水果这个笼统的东西我能吃到吗,我只能吃到具体的香蕉什么的.........

这个规范不止一个,可以制定多个! 应该能明白这个意思吧.......

from abc import ABCMeta,abstractmethod

class Payment(mteaclass = ABCMeta):
@abstractmethod
def pay(self): pass
# @abstractmethod
# def func(self): pass class Alipay(Payment):
def __init__(self,money):
self.money = money def pay(self):
print('使用了支付宝支付了%s元'%self.money) class Jdpay(Payment):
def __init__(self,money):
self.money = money def pay(self):
print('使用了京东支付了%s元' % self.money) class Wechatpay(Payment):
def __init__(self,money):
self.money = money def pay(self):
print('使用了微信支付了%s元' % self.money) def pay(obj):
obj.pay() print(''' w1 = Wechatpay(200)
a1 = Alipay(100)
pay(a1)
pay(w1) ''')
 
   

这就是规范化,统一化设计

这个格式是固定的

在下面统一一个接口

这样的一段代码就实现了对程序的归一化设计,不按照格式来编写程序就会报错

封装

广义的封装: 实例化 一个对象,对象空间封装一些属性

狭义的封装: 私有制

对于私有静态字段,类的外部不能访问

类名不能访问私有静态字段

对于私有静态字段来说,只能在本类内部访问,类的外部,派生类均不可访问(其实可以访问,只不过访问的方式算是python的一个bug)

私有成员: 私有惊天字段, 私有方法,私有对象属性

class B:
__money = 1000 # 私有静态字段 class A(B):
name = 'alex'
__age = 20 # 私有静态字段 def func(self):
print(self.__age)
print(A.__age) # 对于私有静态字段,类的内部可以访问
print('func...')
def func1(self):
print(self.__money)
print(A.__money) a1 = A()
print(a1.name)
print(A.name) print(''' print(a1.__age) # 实例化对象不能访问私有静态字段
print(A.__age) # 类名不能访问私有静态字段
# 对于私有静态字段,类的外部不能访问
a1.func() # 有一个方法可以访问,但是这是python的一个bug print(A._A__age)
''')

多态

python处处是多态!!!!!!!!!!

python中没有多态的概念!!!!!!!!!

.......扑哧........

(你放佛在刻意逗我笑)

嘛,这两句话都没有毛病,python确实没有多态的概念,它有的就是鸭子类型

什么叫鸭子类型? 

鸭子类型: 看着像鸭子,他就是鸭子

# python中没有多态. 但是他有鸭子类型
# 鸭子类型,: 看着像鸭子, 那么他就是鸭子
# 互看为鸭子类型的数据都有:
class Str:
def index(self):
pass class List:
def index(self):
pass class Tuple:
def index(self):
pass print('''
这些类,都互称鸭子类型
其中方法名可以自由更改,任意变换,但是一般不要这样做
''')

python面向对象-封装and多态的更多相关文章

  1. python面向对象(封装,继承,多态)

    python面向对象(封装,继承,多态) 学习完本篇,你将会深入掌握 如何封装一个优雅的借口 python是如何实现继承 python的多态 封装 含义: 1.把对象的属性和方法结合成一个独立的单位, ...

  2. python面向对象(封装、多态、反射)

    目录 面向对象之封装 @property 面向对象之多态 面向对象之反射 面向对象之封装 含义 将类中的某些名字按照特殊的书写方式"隐藏"起来,不让外界直接调用,目的是为了不然外界 ...

  3. Python面向对象三要素-多态

    Python面向对象3要素-多态 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.  一.多态概述 OCP原则:多用“继承”,少修改. 继承的用途:在子类上实现对基类的增强,实现多态. ...

  4. php面向对象 封装继承多态 接口、重载、抽象类、最终类总结

    1.面向对象 封装继承多态  接口.重载.抽象类.最终类 面向对象 封装继承多态  首先,在解释面向对象之前先解释下什么是面向对象? [面向对象]1.什么是类? 具有相同属性(特征)和方法(行为)的一 ...

  5. python面向对象封装案例(附:is和==的区别)

    面向对象封装案例 目标 封装 小明爱跑步 存放家具 01. 封装 封装 是面向对象编程的一大特点 面向对象编程的 第一步 —— 将 属性 和 方法 封装 到一个抽象的 类 中 外界 使用 类 创建 对 ...

  6. Java基础——面向对象(封装——继承——多态 )

    对象 对象: 是类的实例(实现世界中 真 实存在的一切事物 可以称为对象) 类: 类是对象的抽象描述 步骤: 1.定义一个类 (用于 描述人:) ( * 人:有特征和行为) 2.根据类 创建对象 -- ...

  7. python 24 封装、多态

    目录 1. 封装.多态 2. 鸭子类型--Duck typing 3. 类的约束 5. super深度剖析 1. 封装.多态 封装:将代码.数据放入一个容器空间中,并且可以使用. 多态:一个事物可以呈 ...

  8. python面向对象-封装-property-接口-抽象-鸭子类型-03

    封装 什么是封装: # 将复杂的丑陋的隐私的细节隐藏到内部,对外提供简单的使用接口 或 # 对外隐藏内部实现细节,并提供访问的接口 为什么需要封装 1.为了保证关键数据的安全性 2.对外部隐藏内部的实 ...

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

    老师说,按继承/多态/封装这个顺序来讲. 子类使用父类的方法: #!/usr/bin/env python # coding:utf-8 class Vehicle: def __init__(sel ...

随机推荐

  1. static & abstract

    不能放在一起的修饰符:final和abstract,private和abstract,static和abstract,因为abstract修饰的方法是必须在其子类中 实现(覆盖),才能以多态方式调用, ...

  2. 有序列表ol和定义列表dl,dt,dd

    有序列表是一种讲究排序列表结构,使用<ol>标签定义,其中包含多个<li>列表项目.一般网页设计中,列表结构可以互用有序或者无序类表标签.但是,在强调项目排序栏目中,选用有序列 ...

  3. 【JavaScript 从零开始】表达式和运算符(1)

    原始表达式 最简单的表达式是"原始表达式"(primary expression).JavaScript中的原始表达式包含常量或直接量.关键字和变量. // 常量或直接量 1.23 ...

  4. IOS中微信摇一摇声音无法播放解决办法

    在IOS中第一次调用play方法播放音频会被阻止,必须得等用户有交互动作,比如touchstart,click后才能正常调用,所以可以在摇一摇之前提醒用户点击一下开始游戏的按钮或者给用户一个弹窗,用户 ...

  5. C# 的逻辑运算

    &.^.!和|操作符称为逻辑操作符,用逻辑操作符把运算对象连接起来符合C#语法的式子称为逻辑表达式.逻辑 操作符“!”和“^”只作用于其后的操作数,故称为一元操作符.而“&&” ...

  6. vue + element ui 阻止表单输入框回车刷新页面

    问题 在 vue+element ui 中只有一个输入框(el-input)的情况下,回车会提交表单. 解决方案 在 el-form 上加上 @submit.native.prevent 这个则会阻止 ...

  7. 在php中怎么利用js把参数传递给弹窗

    1.在php页面中经常用到把参数传递给弹窗页面,在弹窗页面中操作 2.两种方式,截图为一种 3.最常见的就是利用hideen隐藏域,点击按钮的时候把要传递的参数值传递给隐藏域,需要的时候在弹窗中获取. ...

  8. JAVA 判断字符串是否可转化为JSONObject、JSONArray

    有时,我们需要判断字符串在转化为JSON对象或者JSONArray时,我们可以使用JSONObject.parseObject和JSONArray.parseArray,但是有时候我们需要在转化之前判 ...

  9. HTML5之全局属性 (声明:内容节选自《HTML 5从入门到精通》)

    contentEditable ———————————————————————————————————————————————————————— 功能:允许用户编辑元素中的内容. 功能说明:      ...

  10. JavaScript停止冒泡例子

    <!DOCTYPE html><html><head><meta charset="utf-8"><title>qypt ...