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. 将不需要对外提供的内 ...
随机推荐
- 记账本微信小程序开发六
记账本微信小程序开发六 我的界面 主界面
- Appium+python自动化1-环境搭建(上)
前言 appium可以说是做app最火的一个自动化框架,它的主要优势是支持android和ios,另外脚本语言也是支持java和Python.小编擅长Python,所以接下来的教程是appium+py ...
- iOS项目之交换方法(runtime)
在项目中,经常会遇到系统自带的方法满足不了自己的需求,往往我们解决这种情况的时候,都是在分类中添加一个方法.然而很多时候,项目已经开发很长时间了,如果一个一个的去替换系统的方法,太浪费宝贵的时间,所以 ...
- 51Nod 博弈模板题
连刷3道博弈模板题,算是稍微学习了以下三个经典博弈了.推荐一个博客. 第一道模板:Bash博弈——同余理论 1066 Bash游戏 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度 ...
- WDCP面板Web环境安装redis与phpredis扩展应用方法
http://www.ctyun.cn/bbs/thread-2882-1-1.html根据网友的要求需要在WDCP面板环境中安装人人商城程序,但是这个程序需要支持redis与phpredis扩展.根 ...
- php 排列组合函数(无重复组合,可重复组合【全排列组合】)
<?php /** * 无重复排列組合 * @Author MAX * @DateTime 2018-09-07T16:28:40+0800 * @param Array $arr 需要排列組合 ...
- Docker Weave 介绍 or 工作原理
Docker Weave Network Weave Network:属于第三方网络项目. Weave在Docker主机之间实现Overlay网络,使用业界标准VXLAN封装,基于UDP传输,也可以加 ...
- Docker Swarm nginx 集群搭建
环境1: 系统:Linux Centos 7.4 x64 内核:Linux docker 3.10.0-693.2.2.el7.x86_64 Docker 版本:18.09.1 redis 版本:ng ...
- Linux 系统开启随机端口数量 调优
Linux系统随机端口 默认Linux系统开启的随机端口范围为 32768 ~ 65535.客户端连接服务监听端口需要使用到随机端口连接. Linux系统随机端口调优 1.添加内核配置参数:/etc/ ...
- jQuery实现淘宝轮播图
我爱撸码,撸码使我感到快乐大家好,我是Counter今天给大家分享的是利用jQuery来实现淘宝轮播图,揭开这层神秘的面纱,CSS样式就不做过多的赘述了,主要就是实现的原理,也就是jQuery,老样子 ...