Python9-继承2-day25(大年初二)
继承:什么是什么关系
组合:什么有什么关系
单继承
先抽象再继承,几个类直接的相同代码抽象出来,成为父类
子类自己没有的名字可以使用父类的方法和属性
如果子类自己有,一定先用自己的
在类中使用self的时候,一定要看清楚self指向谁
多继承
新式类和经典类:
关于多继承寻找名字的顺序:新式类广度优先,经典类深度优先
在新式类里,有个类名,mro方法,查看广度优先的继承顺序
在python方法,有个super方法,根据广度优先的继承顺序查找上一个类
from abc import abstractmethod,ABCMeta
class Payment(metaclass=ABCMeta): #元类 默认的元类 type
@abstractmethod
def pay(self,money):
raise NotImplemented #没有实现这个方法 # 规范:接口类或者抽象类都可以
#接口类 默认支持多继承,接口类中的所有的方法都必须不能实现——java
#抽象类 不支持多继承,抽象类中的方法可以实现一些代码的实现——java class Wechat(Payment):
def pay(self,money):
print('已经使用微信支付了%s元'%money) class Alipay(Payment):
def pay(self,money):
print('已经使用支付宝支付了%s元'%money) class Applepay(Payment):
def fuqian(self,money):
print('已经使用applepay支付了%s元'%money) def pay(pay_obj,money): #统一支付入口
pay_obj.pay(money)
# wechat = Wechat()
# wechat.pay(100)
# ali = Alipay()
app = Applepay()
# ali.pay(200)
# pay(wechat,200)
# pay(ali,200)
# pay(app,300)
接口类的多继承
from abc import abstractmethod,ABCMeta
class Swim_Animal(metaclass=ABCMeta):
@abstractmethod
def swim(self):
pass
@abstractmethod
def func1(self):
pass
class Walk_Animal(metaclass=ABCMeta):
@abstractmethod
def walk(self):
pass
class Fly_Animal(metaclass=ABCMeta):
@abstractmethod
def fly(self):
pass
class Animal:
def walk(self):
pass
def swim(self):
pass
def fly(self):
pass
class Oldying(Fly_Animal,Walk_Animal):
pass
class Tiger(Walk_Animal,Swim_Animal):
pass
class Swan(Walk_Animal,Fly_Animal,Swim_Animal):
pass
广义上面向对象的封装:代码的保护,面向对象的思想本身就是一种封装
只让自己的对象能调用自己类中的方法 狭义上的封装——面对对象的三大特性之一
属性和方法都藏起来 不让你看见
class Person():
__key = 123 #私有静态属性
def __init__(self,name,password):
self.name = name
self.__passwd = password #私有属性
def __get_pwd(self): #私有方法
print(self.__dict__) #只要在类的内部使用私有属性,就会自动带上_类名
return self.__passwd
def login(self):
self.__get_pwd()
#所有的私有,都是在变量的左边加上双下划线
#对象的私有属性
#类中私有方法
#类中的静态属性
#所有的私有的 都不能在类的外部使用,只能在类外部使用 alex = Person('alex','alex3714')
# print(alex.__passwd)
print(alex._Person__passwd) #_类名__属性名 alex.__high = 1
print(alex.get_pwd())
print(alex.__high)
Python9-继承2-day25(大年初二)的更多相关文章
- day25、 静态属性、类方法、静态方法、组合、继承、
一. 静态属性.类方法.静态方法 1.1静态属性 class Room: def __init__(self,name,owner,width,length): self.name=name self ...
- day25 面向对象继承,多态,
这两天所学的都是面向对象,后面还有几天也是它,面向对象主要有三个大的模块,封装,继承,多态,(组合),昨天主要讲了面向对象的命名空间,还有组合的用法,今天是讲的继承还有继承里面所包括的钻石继承,以及多 ...
- day25 python学习 继承,钻石继承 多态
---恢复内容开始--- 通过一个列子认识父类和子类中,子类的如何实现对父类默认属性调用,同时拥有自己的属性,如何在子类中调用父类的方法,class Ainmal: country='afdas' d ...
- day25 python学习 继承,钻石继承
通过一个列子认识父类和子类中,子类的如何实现对父类默认属性调用,同时拥有自己的属性,如何在子类中调用父类的方法,class Ainmal: country='afdas' def __init__(s ...
- day25 多继承、接口、抽象类、鸭子类型
今日内容: 如何查看对象的名称空间及对象名 继承的另一种使用 单继承与多继承 经典类与新式类 mro列表 菱形继承 接口 抽象类 鸭子类型 1.查看名称空间包含的变量: 使用类或对象名.__dict_ ...
- python的类的继承-接口继承-归一化设计
1.先在子类本身找,如果子类没有,会去父类找 class Dad: '这个是爸爸类' money=10#Dad类的数据属性 def __init__(self,name): print("爸 ...
- 第三十篇 面向对象的三大特性之继承 supre()
继承 一 .什么是继承? 类的继承跟现实生活中的父.子.孙子.重孙子的继承关系一样,父类又称基类. Python中类的继承分为:单继承 和 多继承. # 定义父类 class ParentClass ...
- python之接口继承
接口继承 接口继承就是(基类)父类定义好2个函数属性(接口),所有的子类必须有这2个函数属性,缺一不可,不是说省代码的,是用来做强制性约束的 基类里面的方法不用具体的实现,只是一个规范而已 1.1实现 ...
- Pyhton学习——Day25
#面向对象的几个方法#1.静态方法@staticmethod,不能访问类属性,也不能访问实例属性,只是类的工具包#2.类方法:@classmethod,在函数属性前加上类方法,显示为(cls)代表类, ...
- day25 组合和内置函数
day25 组合和内置函数 一.组合 # 解决类与类之间代码冗余问题: 1. 继承 2. 组合 组合:一个对象拥有一个属性, 属性的值必须是另外一个对象 继承满足的是:什么是什么的关系 # is-a ...
随机推荐
- C# 获取当前ip
1.获取局域网ip IPAddress ipAddr = Dns.Resolve(Dns.GetHostName()).AddressList[0];//获得当前IP地址 string ip=ipAd ...
- __getitem__,__setitem__,__delitem__
__getitem__.__setitem__.__delitem__ 总结: __getitem__,__setitem_,__delitem__ : obj[‘属性’]的方式去操作属性时触发的方法 ...
- 基于华为云语音通知 VoiceCall 的应用上线记录并分享.NET CORE DEMO
最近公司要上线语音通知功能,需求如下: 场景:发生报警时,自动通知到指定的手机号,同时,提供几个按键选项,例如,语音通知如下: “您好,XXX小区发生XXXX报警,按1确认报警,按2忽略报警,按3屏蔽 ...
- SpirngMVC-JSON
Springmvc默认用MappingJacksonHttpMessageConverter对json数据进行转换,需要加入jackson的包,如下: 配置json转换器 在注解适配器中加入messa ...
- Hibernate-Session使用的背后
一.Session缓存的介绍 简单说,缓存介于应用程序和数据库之间,是临时存放数据的内存区域,作用是减少对数据库的访问次数,从而提高应用程序的运行性能.Session有一个缓存,也叫hibernate ...
- 我的NopCommerce之旅(4): 定时任务之邮件
一.功能简介 用户购买物品生成订单后,系统将发送邮件提醒给用户 二.操作步骤 后台配置一个系统的默认发送邮箱 启动定时任务,这里包括多个任务,只需要启动邮件任务 查看邮件发送情况 三.数据库分析 [d ...
- 洛谷P2827 蚯蚓(单调队列)
题意 初始时有$n$个蚯蚓,每个长度为$a[i]$ 有$m$个时间,每个时间点找出长度最大的蚯蚓,把它切成两段,分别为$a[i] * p$和$a[i] - a[i] * p$,除这两段外其他的长度都加 ...
- VS 2013如何编译ASM文件
1. 左键点击解决方案下面的工程 2. 点击上面菜单中的项目,此时有个生成自定义属性 3. 勾选上masm,此时就有Microsoft Macro Assembler了 https://stac ...
- 增加和减少mongodb复制集中的节点
MongoDB Replica Sets不仅提供高可用性的解决方案,同时也提供负载均衡的解决方案,增减 Replica Sets节点在实际应用中非常普通.例如,当应用的读压力暴增时,3台节点的环境已不 ...
- 洛谷 P2253 好一个一中腰鼓!
题目背景 话说我大一中的运动会就要来了,据本班同学剧透(其实早就知道了),我萌萌的初二年将要表演腰鼓[喷],这个无厘头的题目便由此而来. Ivan乱入:“忽一人大呼:‘好一个安塞腰鼓!’满座寂然,无敢 ...