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. [Codeforces 932E]Team Work

    Description 题库链接 求 \[\sum_{i=1}^n C(n,i)\times i^k\] \(1\leq n\leq 10^9, 1\leq k\leq 5000\) Solution ...

  2. HTML5的新结构标签

    在之前的HTML页面中,大家基本上都是用了Div+CSS的布局方式.而搜索引擎去抓取页面的内容的时候,它只能猜测你的某个Div内的内容是文章内容容器,或者是导航模块的容器,或者是作者介绍的容器等等.也 ...

  3. angularjs 从外部改变controller内的数据

    var appElement = document.querySelector('[ng-controller=seatsCtrl]'); var $scope = angular.element(a ...

  4. 使用T4Scaffolding 创建自己的代码生成

    nuget查找引入T4Scaffolding.Core 这个是最低层的,没有其他依赖,当然也没有现成的模板 这个有对EF的依赖,自带了生成DBContext的模板   这个自带了一些mvc的contr ...

  5. FileStream文件的使用

    // FileStream//(操作字节的)水一勺一勺的 可以操作任意格式的文件           //File一下子就读出来 //读取文本文件 // FileMode.OpenOrCreate你针 ...

  6. iOS 网络请求数据缓存

    1. NSURLCache简介: iOS对NSURLRequest提供了7种缓存策略:(实际上能用的只有4种) NSURLRequestUseProtocolCachePolicy // 默认的缓存策 ...

  7. dubbo的重试机制

    对dubbo熟悉的人对下面的配置一定不会陌生: <dubbo:reference id="xxxx" interface="xx" check=" ...

  8. graphviz 的绘图布局

          graphviz是贝尔实验室开发的一个开源的工具包,它使用一个特定的DSL(领域特定语言):dot作为脚本语言,然后使用布局引擎来解析此脚本,并完成自动布局. graphviz中包含了众多 ...

  9. hdu 2612

    Find a way Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  10. 悟空模式-java-普通工厂模式

    [大圣看玩多时,问土地道:“此树有多少株数?”土地道:“有三千六百株.前面一千二百株,花微果小,三千年一熟,人吃了成仙了道,体健身轻.中间一千二百株,层花甘实,六千年一熟,人吃了霞举飞升,长生不老.后 ...