python day19--面向对象,接口,封装
#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--面向对象,接口,封装的更多相关文章
- python(面向对象-类封装调用)
一.面对对象思想 (1)大家肯定听过 Python 中”一切皆对象“的说法,但可能并不了解它的具体含义,只是在学习的时候听说 Python 是面向对象的编程语言,本节将向大家详细介绍 Python 面 ...
- python之面向对象之封装
今天我们终于进入了面向对象,今天做一下面向的封装的总结 #面向对象的封装 #这里定义了一个类,名称为Role,object是所有类的父类 class Role(object): #这里是定义实例的属性 ...
- Python之面向对象:封装
1.封装的概念 将对象的数据与操作数据的方法相结合,通过方法将对象的数据与实现细节保护起来,就称为封装.外界只能通过对象的方法访问对象,因此封装同时也实现了对象的数据隐藏. 在使用面向对象的封装特性时 ...
- python学习day19 面向对象(一)封装/多态/继承
面向对象 封装思想:将同一类的函数函数封装到同一个py文件中,方便调用 面向对象也有封装的作用,将同一类的函数封装到一个类中 多态(鸭子模型):多种类型/多种形态 #,什么事鸭子模型 对于一个函数,p ...
- Jser 设计模式系列之面向对象 - 接口封装与继承
GOF在<设计模式>中说到:面向接口编程,而非面向实现编程 鉴于此,这个概念可见一斑! JS却不像其他面向对象的高级语言(C#,Java,C++等)拥有内建的接口机制,以确定一组对象和另一 ...
- python基础--面向对象之封装
# 在python中用双下划线,开头的方式将属性隐藏起来(设置成私有的) # 但其实这只是一种变形操作,而且仅仅在类定义阶段会发生变形 # 类中所有双下划线开头的如__x都会在类定义的时候自动形成:_ ...
- python 面向对象之封装与类与对象
封装 一,引子 从封装本身的意思去理解,封装就好像是拿来一个麻袋,把小猫,小狗,小王八,小老虎一起装进麻袋,然后把麻袋封上口子.照这种逻辑看,封装='隐藏',这种理解是相当片面的 二,先看如何隐藏 在 ...
- python面向对象(封装、继承、多态)+ 面向对象小栗子
大家好,下面我说一下我对面向对象的理解,不会讲的很详细,因为有很多人的博客都把他写的很详细了,所以,我尽可能简单的通过一些代码让初学者可以理解面向对象及他的三个要素. 摘要:1.首先介绍一下面向对象 ...
- python之路----面向对象的封装特性
封装 [封装] 隐藏对象的属性和实现细节,仅对外提供公共访问方式. 广义上面向对象的封装 :代码的保护,面向对象的思想本身就是一种只让自己的对象能调用自己类中的方法 狭义上的封装 —— 面向对象的三大 ...
- python开发面向对象基础:封装
一,封装 [封装] 隐藏对象的属性和实现细节,仅对外提供公共访问方式. [好处] 1. 将变化隔离: 2. 便于使用: 3. 提高复用性: 4. 提高安全性: [封装原则] 1. 将不需要对外提供的内 ...
随机推荐
- Python数据分析Pandas库方法简介
Pandas 入门 Pandas简介 背景:pandas是一个Python包,提供快速,灵活和富有表现力的数据结构,旨在使“关系”或“标记”数据的使用既简单又直观.它旨在成为在Python中进行实际, ...
- 【题解】Luogu SP1435 PT07X - Vertex Cover
原题传送门 求树的最小点覆盖,就是一个树形dp 类似于没有上司的舞会 dp的状态为\(f[i][0/1]\),表示i节点是否选择 边界是\(f[x][0]=0\),\(f[x][1]=1\) 转移方程 ...
- 安卓内嵌H5只展示部分静态页面
问题: 安卓内嵌H5在华为P9部分机型只展示h5静态页面无法展示接口返回渲染的页面 解决办法: Android 关闭硬件加速 android:hardwareAccelerated=" ...
- 剑指offer(20)包含min函数的栈
题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数. 题目分析 首先一开始我们分析得到最小值肯定要比较嘛,和栈里面的数据一一比较,但是栈这种数据结构,你又只能和栈顶弹出来的 ...
- flask --- 03 .特殊装饰器, CBV , redis ,三方组件
一.特殊装饰器(中间件) 1.before_request 在请求进入视图函数之前 @app.before_request def look(): 2. after_request 在结束视图函数之后 ...
- EXEC sp_executesql with multiple parameters
传递多个参数 https://stackoverflow.com/questions/28481189/exec-sp-executesql-with-multiple-parameters http ...
- Python:将数组中的元素导出到变量中 (unpacking)
问题 你需要将数组(list)或元组(tuple)中的元素导出到N个变量中. 解决方案 任何序列都可以通过简单的变量赋值方式将其元素分配到对应的变量中,唯一的要求就是变量的数量和结构需要和序列中的结构 ...
- rabbitMQ 的三种Exchange
rabbitMQ 的Exchange有3种路由方式: direct.fanout.topic ,以下为详细说明 1. Direct Exchange 处理路由键.需要将一个队列绑定到交换机上,要求 ...
- MATLAB绘图功能(1) 二维高层绘图操作
文末源代码 部分源代码 %% 基本绘图操作 x=:*pi; y=sin(x); plot(x,y); % 第二个参数为矩阵 y1=sin(x); y2=cos(x); y3=0.002*exp(x); ...
- Scale Free Network | 无标度网络
在看WGCNA的时候看到的一个术语. 先来看一个随机网络:没有中心节点,大部分节点都均匀的连在一起. 再看一下scale free network:大部分的连接都集中在少数的中心 如何检验一个网络是否 ...