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语言+Python版)宝宝再也不怕面试官写排序算法了
直接插入排序 过程: 1. 数据可分看成两个部分,前面的数据是有序的 2. 从后面的数据取出一个元素,插到前面有序数据的合适位置 从右端开始查找,到找到比此元素大的时候,则此元素向后移动,以空出多余的 ...
- sql server 日期 查询技巧
CONVERT(varchar(100), SendTime, 23) –-sql里的字段SendTime参数 selectdateName(weekday,getDate());--返回当前星期 s ...
- nodejs 快要变成爬虫界的王者
nodejs 快要变成爬虫界的王者 爬虫这东西是很多数据采集必须要的东西. 但是现在随着网页不断发展,已经出现了出单纯的网页,到 ajax 网页, 再到 spa , 再到 websocket 应用,一 ...
- 关于php和docker
Docker在PHP项目开发环境中的应用 http://www.wolonge.com/zhuanlan/detail/117441 Docker在PHP项目开发环境中的应用 http://linux ...
- 数据库查询,显示为树形结构(easyui+SSM)
在实际项目上,有很多地方后台存了一个表,但是在显示查询的时候需要显示为树形结构. 本项目是easyui+SSM框架. 前台程序为: <!DOCTYPE html> <html> ...
- 涉及到弹出层的opacity样式问题
最近遇到一个弹出层在Chrome中重复的问题,观察发现是opacity引起的以下是代码及现象<!DOCTYPE html><html> <head> ...
- JS字符串处理方法
1.字符方法charAt()和charCodeAt();这两个方法都接收一个参数例:<script>var stringValue = "hello world"; s ...
- Git和SVN的5个基本区别
如果你在读这篇文章,说明你跟大多数开发者一样对GIT感兴趣,如果你还没有机会来试一试GIT,我想现在你就要了解它了. GIT不仅仅是个版本控制系统,它也是个内容管理系统(CMS),工作管理系统等.如果 ...
- ThinPHP5.0 目录结构
官网文档 https://www.kancloud.cn/manual/thinkphp5/118008 project 应用部署目录├─application 应用目录(可设置)│ ├─commo ...
- QT +样式表
学习样式表的目的:可以设计出好看的控件.(比如可以给一些按钮设计成好看的图片) QT 样式表的思想很大程度上是来自于HTML的层叠式样式表(CSS),通过调用QWidget->setStyleS ...