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 ...
随机推荐
- [JSOI2009]密码
Description Input Output Sample Input 10 2 hello world Sample Output 2 helloworld worldhello HINT 一看 ...
- ORA-00972_标识符过长
执行SQL查询报:"ORA-00972:标识符过长"错误. 执行SQL: SELECT T.F_FTBS, T.F_TZMC "X组/XXXX/XXXX名称", ...
- linux学习-Linux系统启动过程
linux系统启动过程 Linux系统的启动过程并不是大家想象中的那么复杂,其过程可以分为5个阶段: 内核的引导. 运行init. 系统初始化. 建立终端 . 用户登录系统. 内核引导 电源开机后,首 ...
- 删除所有约束、表、视图等SQL脚本
--删除所有约束.表.视图等SQL脚本 --############################################### --删除所有外键约束 --################# ...
- redis和memcache
redis安装:($sudo apt-get update,$sudo apt-get install redis-server) redis启动:($redis-server): 查看redis是否 ...
- 1099 字串变换 2002年NOIP全国联赛提高组
1099 字串变换 2002年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 已知有 ...
- 实现dedecms(PC端)全站动态浏览 并实现伪静态
dedecms默认是生成静态文件,如何实现织梦(PC端)全站动态浏览呢? 织梦全站动态浏览方法 1. 修改首页为动态浏览 后台-生成-更新首页-勾选“仅动态浏览” 2. 修改栏目页为动态浏览 ①添加或 ...
- 从Assets读取文件 用scanner扫描inputstream
代码如下: 对InputStream的处理,从assets获取数据 InputStream in; try { in = getAssets().open("Android05.txt&qu ...
- matlab载入图像,旋转,裁剪 保存
clc;clear all;close all src=imread('C:\Users\think\Desktop\12.jpg'); subplot(,,) imshow(src); I = ma ...
- IOS7适配
(1)如果应用程序始终隐藏 status bar 那么恭喜呢,你在UI上需要的改动很少很少. (2)如果应用程序显示status bar,可以讲status bar设置成黑色不透明 ,然后在UIVie ...