继承:什么是什么关系
组合:什么有什么关系
单继承
先抽象再继承,几个类直接的相同代码抽象出来,成为父类
子类自己没有的名字可以使用父类的方法和属性
如果子类自己有,一定先用自己的
在类中使用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(大年初二)的更多相关文章

  1. day25、 静态属性、类方法、静态方法、组合、继承、

    一. 静态属性.类方法.静态方法 1.1静态属性 class Room: def __init__(self,name,owner,width,length): self.name=name self ...

  2. day25 面向对象继承,多态,

    这两天所学的都是面向对象,后面还有几天也是它,面向对象主要有三个大的模块,封装,继承,多态,(组合),昨天主要讲了面向对象的命名空间,还有组合的用法,今天是讲的继承还有继承里面所包括的钻石继承,以及多 ...

  3. day25 python学习 继承,钻石继承 多态

    ---恢复内容开始--- 通过一个列子认识父类和子类中,子类的如何实现对父类默认属性调用,同时拥有自己的属性,如何在子类中调用父类的方法,class Ainmal: country='afdas' d ...

  4. day25 python学习 继承,钻石继承

    通过一个列子认识父类和子类中,子类的如何实现对父类默认属性调用,同时拥有自己的属性,如何在子类中调用父类的方法,class Ainmal: country='afdas' def __init__(s ...

  5. day25 多继承、接口、抽象类、鸭子类型

    今日内容: 如何查看对象的名称空间及对象名 继承的另一种使用 单继承与多继承 经典类与新式类 mro列表 菱形继承 接口 抽象类 鸭子类型 1.查看名称空间包含的变量: 使用类或对象名.__dict_ ...

  6. python的类的继承-接口继承-归一化设计

    1.先在子类本身找,如果子类没有,会去父类找 class Dad: '这个是爸爸类' money=10#Dad类的数据属性 def __init__(self,name): print("爸 ...

  7. 第三十篇 面向对象的三大特性之继承 supre()

    继承 一 .什么是继承? 类的继承跟现实生活中的父.子.孙子.重孙子的继承关系一样,父类又称基类. Python中类的继承分为:单继承 和  多继承. # 定义父类 class ParentClass ...

  8. python之接口继承

    接口继承 接口继承就是(基类)父类定义好2个函数属性(接口),所有的子类必须有这2个函数属性,缺一不可,不是说省代码的,是用来做强制性约束的 基类里面的方法不用具体的实现,只是一个规范而已 1.1实现 ...

  9. Pyhton学习——Day25

    #面向对象的几个方法#1.静态方法@staticmethod,不能访问类属性,也不能访问实例属性,只是类的工具包#2.类方法:@classmethod,在函数属性前加上类方法,显示为(cls)代表类, ...

  10. day25 组合和内置函数

    day25 组合和内置函数 一.组合 # 解决类与类之间代码冗余问题: 1. 继承 2. 组合 组合:一个对象拥有一个属性, 属性的值必须是另外一个对象 继承满足的是:什么是什么的关系 # is-a ...

随机推荐

  1. jmeter常用的beanshell脚本

    时间戳下载文件保存响应内容断言连接数据库解析jsonlist递归创建多级目录 常用内置变量调用cmd文件GUI小命令 时间戳import java.text.SimpleDateFormat;impo ...

  2. 118 Pascal's Triangle 帕斯卡三角形 杨辉三角形

    给定 numRows, 生成帕斯卡三角形的前 numRows 行.例如, 给定 numRows = 5,返回[     [1],    [1,1],   [1,2,1],  [1,3,3,1], [1 ...

  3. axios 在vue中使用

    下载组件: npm install axios --save npm install qs --save //处理对象防止产生跨域问题 引入: 新建axios文件夹,文件下新建index.js文件 i ...

  4. Spark Mllib里如何删除每一条数据中所有的双引号“”(图文详解)

    不多说,直接上干货! 具体,见 Hadoop+Spark大数据巨量分析与机器学习整合开发实战的第13章 使用决策树二元分类算法来预测分类StumbleUpon数据集

  5. js实现对象或者数组深拷贝

    今天遇到个问题,就是vue绑定的数组在push中所有的数组都会跟着改变.这个主要是因为 JavaScript中对象或者数组等引用类型,直接拷贝,改变一个另外一个也会改变: 有个简单的方法就是先转换为字 ...

  6. asp.net网页跳转

    1.Response.Redirect("http://www.bcbbs.net",false);    目标页面和原页面可以在2个服务器上,可输入网址或相对路径.后面的bool ...

  7. 2017 清北学堂 Day 6终极考试报告

    预计分数: 100+70+70 = 240 实际假分数 : 40+80+70= 190  in cena(好吧不得不承认这个分数,,,,,,=.=) 实际真分数 : 100+80+100 = 280 ...

  8. 【javascript】操作给定的二叉树,将其变换为源二叉树的镜像。

    操作给定的二叉树,将其变换为源二叉树的镜像. 输入描述: 二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 ...

  9. 百度地图 v2.1.3申请KEY Android签名证书的sha1值

    今天研究下百度地图,没想到第一步就遇到了问题,升级2.13后,需要Android签名证书的sha1值,网上看了下,发现遇到这问题的童鞋还是很多,官方说的两种方法: 第一种:使用keytool keyt ...

  10. HTML5文档结构 摘要

    <!DOCType html>--声明文档结构类型 <html lang=zh-cn> <head> <meta charset=utf-8> < ...