#1.接口类,对象类。规范类中方法的统一。

# 第一版:三个类,每个类中有相同的方法
# class Alipay:
# def __init__(self,money):
# self.money=money
# def pay(self):
# print('用支付宝支付了{}钱'.format(self.money))
# class JDpay:
# def __init__(self,money):
# self.money=money
# def pay(self):
# print('用白条支付了{}钱'.format(self.money))
# class Wechatpay:
# def __init__(self,money):
# self.money=money
# def pay(self):
# print('用微信支付了{}钱'.format(self.money))
# p1=Alipay(200)
# p2=JDpay(300)
# p3=Wechatpay(260)
# p1.pay()#用第一种方法付钱
#第二版:改进,让方法一样
# class Alipay:
# def __init__(self, money):
# self.money = money
# def pay(self):
# print('用支付宝支付了{}钱'.format(self.money))
# class JDpay:
# def __init__(self,money):
# self.money=money
# def pay(self):
# print('用京东支付了{}钱'.format(self.money))
# class Wechatpay:
# def __init__(self,money):
# self.money=money
# def pay(self):
# print('用微信支付了{}钱'.format(self.money))
# def pay(obj):#统一pay的方法
# obj.pay
# a1=Alipay(200)
# pay(a1)#归一化设计 #第三版,制定规则让方法统一 # from abc import ABCMeta,abstractmethod
#
# class payment(metaclass=ABCMeta):
# @abstractmethod
# def pay(self):pass#继承它的类中必须有pay这个方法,方法名也要相同。
# class Alipay(payment):
# def __init__(self,money):
# self.money=money
# def pay(self):
# print('用支付宝支付了{}钱'.format(self.money))
# class JDpay(payment):
# def __init__(self,money):
# self.money=money
# def pay(self):
# print('用京东支付了{}钱'.format(self.money))
# class Wechatpay(payment):
# def __init__(self,money):
# self.money=money
# def pay(self):
# print('用微信支付了{}钱'.format(self.money))
# def pay(obj):
# obj.pay()
# w1=Alipay(200)
# a2=JDpay(100)
# pay(w1)
# pay(a2) # from abc import ABCMeta,abstractmethod
# class payment(metaclass=ABCMeta):
# @abstractmethod
# def pay(self):pass
#
# class Alipay(payment):
# def __init__(self,money):
# self.money=money
# def pay(self):
# print('支付宝支付{}钱'.format(self.money))
# def pay(obj):
# obj.pay()
# w1=Alipay(100)
# pay(w1)
# 2.多态:python没有多态, 处处是多态
#python弱类型语言,不管什么类型传入函数,封装到函数都可以。
#python有鸭子类型,是一种思想。
# class Animal:
# def eat(self):
# pass
# class Person:
# def eat(self):
# pass
# class machine:
# def eat(self):
# pass #这些类 都互称为鸭子.有相同的方法,名字相同。 #3.封装
#广义的封装:实例化一个对象,给对象空间封装一些属性。
#狭义的封装:私有制 #私有成员:私有静态字段,私有方法,私有对象属性 #1)私有静态字段
# class me:
# __age=20
# def __init__(self):
# print(self.__age)
# def my(self):
# print(me.__age)
# class Anyone(me):
# __name='alen'
# def func(self):
# print(Anyone.__name)#内部可以访问
# def func1(self):
# # print(self.__name)
# print(self.age)
# a1=Anyone()#可以访问父类中__init__中的私有字段
# print(a1.__name)#实例化对象不能访问私有字段
# print(Anyone.__name)#类名不能访问私有字段 # 对于私有静态字段,类的外部不能访问.
# print(a1.func())#函数内部可以访问
# 对于私有静态字段,类的内部可以访问.
# print(a1.func1())
# 对于私有静态字段来说,只能在本类中内部访问,类的外部,派生类均不可访问.
# print(a1.my())#本类可以访问
#2)私有方法
# class A:
# __my="asdfa"
# def __mylove(self):
# print('woaini')
# class B(A):
# def __youlove(self):
# print('oh my god')
# def funck(self):
# # self.__mylove# 类的派生类也不能访问.
# self.__youlove()#类内部的方法可以访问
# a1=B()
# # a1.__youlove()#不能在类外部执行方法
# a1.funck()# 类的派生类也不能访问. # class brith:
# __air='020'
# def __bb(self):
# print('呼吸空气')
# def __init__(self):
# self.__bb()
#
# class day(brith):
# def __aa(self):
# print('阿斯顿发送到')
#
# a1=day()

python day19--面向对象,接口,封装的更多相关文章

  1. python(面向对象-类封装调用)

    一.面对对象思想 (1)大家肯定听过 Python 中”一切皆对象“的说法,但可能并不了解它的具体含义,只是在学习的时候听说 Python 是面向对象的编程语言,本节将向大家详细介绍 Python 面 ...

  2. python之面向对象之封装

    今天我们终于进入了面向对象,今天做一下面向的封装的总结 #面向对象的封装 #这里定义了一个类,名称为Role,object是所有类的父类 class Role(object): #这里是定义实例的属性 ...

  3. Python之面向对象:封装

    1.封装的概念 将对象的数据与操作数据的方法相结合,通过方法将对象的数据与实现细节保护起来,就称为封装.外界只能通过对象的方法访问对象,因此封装同时也实现了对象的数据隐藏. 在使用面向对象的封装特性时 ...

  4. python学习day19 面向对象(一)封装/多态/继承

    面向对象 封装思想:将同一类的函数函数封装到同一个py文件中,方便调用 面向对象也有封装的作用,将同一类的函数封装到一个类中 多态(鸭子模型):多种类型/多种形态 #,什么事鸭子模型 对于一个函数,p ...

  5. Jser 设计模式系列之面向对象 - 接口封装与继承

    GOF在<设计模式>中说到:面向接口编程,而非面向实现编程 鉴于此,这个概念可见一斑! JS却不像其他面向对象的高级语言(C#,Java,C++等)拥有内建的接口机制,以确定一组对象和另一 ...

  6. python基础--面向对象之封装

    # 在python中用双下划线,开头的方式将属性隐藏起来(设置成私有的) # 但其实这只是一种变形操作,而且仅仅在类定义阶段会发生变形 # 类中所有双下划线开头的如__x都会在类定义的时候自动形成:_ ...

  7. python 面向对象之封装与类与对象

    封装 一,引子 从封装本身的意思去理解,封装就好像是拿来一个麻袋,把小猫,小狗,小王八,小老虎一起装进麻袋,然后把麻袋封上口子.照这种逻辑看,封装='隐藏',这种理解是相当片面的 二,先看如何隐藏 在 ...

  8. python面向对象(封装、继承、多态)+ 面向对象小栗子

    大家好,下面我说一下我对面向对象的理解,不会讲的很详细,因为有很多人的博客都把他写的很详细了,所以,我尽可能简单的通过一些代码让初学者可以理解面向对象及他的三个要素. 摘要:1.首先介绍一下面向对象 ...

  9. python之路----面向对象的封装特性

    封装 [封装] 隐藏对象的属性和实现细节,仅对外提供公共访问方式. 广义上面向对象的封装 :代码的保护,面向对象的思想本身就是一种只让自己的对象能调用自己类中的方法 狭义上的封装 —— 面向对象的三大 ...

  10. python开发面向对象基础:封装

    一,封装 [封装] 隐藏对象的属性和实现细节,仅对外提供公共访问方式. [好处] 1. 将变化隔离: 2. 便于使用: 3. 提高复用性: 4. 提高安全性: [封装原则] 1. 将不需要对外提供的内 ...

随机推荐

  1. Django-debug-toolbar的使用

    Django项目的开发过程中,离不开各种调试,那么,我们今天介绍一个工具,django debug toolbar,该工具为我们提供了更加丰富的调试信息,如提供session信息,SQL查询信息等等. ...

  2. Docker Kubernetes 高可用架构设计

    Docker Kubernetes 高可用架构设计 官方方案:保证master端不发生单点故障. 官方使用一台Load Balancer负载均衡代理3台master端,终端与etcd与work Nod ...

  3. Linux 进程后台运行

    Linux 进程后台运行 1.进程在当前终端后台运行.(关闭终端后进程自动退出) sh test.sh & 注:运行进程后跟 “&” 2.进程长期后台运行不受终端关闭影响. nohup ...

  4. Tomcat基本

    Tomcat web 应用服务器基础 jdk+tomcat安装 1.运行Tomcat为什么要装jdk? http://blog.sina.com.cn/s/blog_753bc97d0102w5rd. ...

  5. VOC标签转化为YOLO标签

    参考darknet自带的voc_label.py import xml.etree.ElementTree as ET import pickle import os from os import l ...

  6. linux --- 10.常见命令

    1.在登录Linux时,一个具有唯一进程ID号的shell将被调用,这个ID是什么()A.NID B.PID C.UID C.CID 2.下面那个用户存放用户密码信息()A./boot B./etc ...

  7. flask --- 01 .初始

    一. 四种web框架比较 Django : 优点 - 大而全所有组件都是有组织内部开发高度定制化 教科书级别的框架 缺点 - 大到浪费资源,请求的时候需要的资源较高 Flask : 优势 - 小而精, ...

  8. Learning-Python【7】:Python数据类型(3)—— 字典、集合

    一.字典类型 1.用途:用来存放多个不同种类的值 2.定义方式:在{ }内用逗号分隔开多个key:value的元素,其中value可以是任意数据类型,而key的功能通常是用来描述value的,所以ke ...

  9. redis+spring 整合

    最近在研究redis也结合了许多网上的资料分享给大家,有些不足的还望大家多补充提点,下面直接进入主题. 结构图: 几个redis的核心jar,spring的一些jar自行导入 接下来开始配置项目: 1 ...

  10. vnpy官网说明文档网址

    接触VNPY一年多,一直对作者设计原理和思想有所困惑.发一篇vnpy官网的说明文档,便于以后理解项目代码. http://www.vnpy.org/archives.html