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. 将不需要对外提供的内 ...
随机推荐
- JavaScript eval
JavaScript eval JavaScript中的eval是Python中eval和exec的合集,既可以编译代码也可以获取返回值. // EvalError 执行字符串中的JavaScrip ...
- 前后端分离不可缺少的神器 NGINX
样例讲解 1:安装工具包 wget.vim和gcc yum install -y wget yum install -y vim-enhanced yum install -y make cmake ...
- https连接器
非对称性加密:A生成一份公私钥,将公钥交给需要进行数据传输的B,B发送数据时先用公钥对数据进行加密,然后发送给A,再由A使用私钥进行解密. 但存在漏洞即B如何确认公钥是由A提供的.因此需要一个第三方机 ...
- server time zone
问题原因 由于使用的Mysql数据库驱动版本太高,存在数据库和系统时区差异,所以出问题. 问题解决 Spring Boot配置文件中在url: jdbc:mysql://127.0.0.1:3306/ ...
- SpringBoot MyBatis 配置多数据源 (静态多个)
转载地址:https://www.jianshu.com/p/118ca1d5ecf9?utm_campaign=haruki&utm_content=note&utm_medium= ...
- haoop fs 命令
Hadoop fs 命令详解 参考文档:https://hadoop.apache.org/docs/r2.7.1/hadoop-project-dist/hadoop-common/FileSy ...
- "她等待刀尖已经太久"--茨维塔耶娃诗抄
生活 1 你无法夺走我的红晕—— 它强大——如同河水的汛潮! 你是猎人,可我不会上当, 你若追逐,我就会逃跑. 你无法夺走我鲜活的灵魂! 就这样,在急遽的追逐中—— 一匹阿拉伯的骏马, 微 ...
- RMAN 的优缺点及RMAN 备份及恢复步骤
一. RMAN 备份的一些优点和OS命令备份方式相比,使用RMAN的优点 1 备份执行期间不需要人工干预,因此减少了误操作的机会:2 可以有效的将备份和恢复结合起来:3 支持除逻辑备份以外的所有 ...
- Wincc用户登录VBS脚本
在Wincc中为防止未知用户的误操作,在操作性按钮以及图符等设备操作面板,在组流程图时,需设置用户权限,只有符合权限的用户才可以进行操作.所以在流程图界面需设置系统用户登录界面.登录操作可以选择按钮或 ...
- bzoj3884 上帝的集合
根据一些书上的记载,上帝的一次失败的创世经历是这样的: 第一天, 上帝创造了一个世界的基本元素,称做“元”. 第二天, 上帝创造了一个新的元素,称作“α α ”.“α α 被定义为“元”构成的集合.容 ...