析构:

def __del__(self):
  print("del..run...")
r1 = Role("xx")
del r1
结果打印del..run...

析构函数在实例被销毁的时候执行__del__

做程序的收尾工作
名字r1被删除后,垃圾回收机制会将对象清空
就执行了__del__函数

继承1

对父类的功能进行扩展而无需重写

* 多级继承,一般三层
父--子--孙--..
* 多重继承 class Teacher(SchoolMember,School)用的不多
实现继承和接口继承
实现不需要再写父类的方法,接口继承需要实现

继承的写法

class Person(object):
def __init__(self,name,age):
self.name=name
self.age=age
self.sex="normal"
def talk(self):
print("person is talking..")
class BlackPerson(Person):
def __init__(self,name,age,strength):
Person.__init__(self,name,age)
self.strength=strength
def talk(self):
print("blackperson is talking...")
def walk(self):
print("blackperson is walking...")
class WhitePerson(Person):
pass
b = BlackPerson("bolt",30,"strong")
print(b.name,b.age,b.sex,b.strength) # bolt 30 normal strong

talk方法重写了,并添加了walk方法。

子类继承父类的构造函数,构造的时候必须传参数

要给子类加特殊的参数怎么办?不完全覆盖父类构造方法,先继承再重构
可以看出不仅构造方法,其他方法也可以这样在父类方法基础上增加功能
def __init__(self,name,age,strength):
  Person.__init__(self,name,age) #经典类写法
  super(Person,self).__init__(name,age) #新式类写法

继承2

__dict__:类的属性全放字典里

==================新式类和经典类===================统一用新式类
新式类写法
class Person(object):
super...
经典类写法
class Person:
ParentClass.__init__

新式类跟经典类不光super的区别还有
多继承时 继承顺序的区别
现在主要写的是新式类

例如  B继承A,C继承A,D继承BC

新式类继承从左到右 BCA广度查询 ,
Python3里不论新式类还是经典类继承时都是广度查询
python2里经典类是深度,新式类是广度
===============================================================
多态
继承的目的————代码重用
多态的目的————接口重用
f = Father()
s = Son()
s = f
Python中不直接支持多态,但可以间接实现

class Animal:
def __init__(self,name):
self.name = name
def talk(self):
raise NotImplementedError("subclass must implement abstract method")
a = Animal("aaa")
a.talk() #报错NotImplementError class Cat(Animal):
def talk(self):
print("miao..")
class Dog(Animal):
def talk(self):
print("wang...")
d = Dog()
c = Cat()

不关注是哪个实例,用一个方法调用,
Animal.talk(c) 装哪个对象,就用哪个对象的talk方法,只能按下面这种
def animal_talk(obj):
  obj.talk()
animal_talk(d)
animal_talk(c)

Python面向对象,析构继承多态的更多相关文章

  1. python面向对象(封装,继承,多态)

    python面向对象(封装,继承,多态) 学习完本篇,你将会深入掌握 如何封装一个优雅的借口 python是如何实现继承 python的多态 封装 含义: 1.把对象的属性和方法结合成一个独立的单位, ...

  2. python面向对象之继承/多态/封装

    老师说,按继承/多态/封装这个顺序来讲. 子类使用父类的方法: #!/usr/bin/env python # coding:utf-8 class Vehicle: def __init__(sel ...

  3. Python 面向对象编程 继承 和多态

    Python 面向对象编程 继承 和多态 一:多继承性 对于java我们熟悉的是一个类只能继承一个父类:但是对于C++ 一个子类可以有多个父亲,同样对于 Python一个类也可以有多个父亲 格式: c ...

  4. Python面向对象三要素-多态

    Python面向对象3要素-多态 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.  一.多态概述 OCP原则:多用“继承”,少修改. 继承的用途:在子类上实现对基类的增强,实现多态. ...

  5. Python面向对象03 /继承

    Python面向对象03 /继承 目录 Python面向对象03 /继承 1. 初识继承 2. 单继承 3. 多继承 4. 总结 1. 初识继承 概念:专业角度:如果B类继承A类,B类就称为子类,派生 ...

  6. php面向对象 封装继承多态 接口、重载、抽象类、最终类总结

    1.面向对象 封装继承多态  接口.重载.抽象类.最终类 面向对象 封装继承多态  首先,在解释面向对象之前先解释下什么是面向对象? [面向对象]1.什么是类? 具有相同属性(特征)和方法(行为)的一 ...

  7. Python面向对象编程——继承与派生

    Python面向对象编程--继承与派生 一.初始继承 1.什么是继承 继承指的是类与类之间的关系,是一种什么"是"什么的关系,继承的功能之一就是用来解决代码重用问题. 继承是一种创 ...

  8. python面向对象的继承-组合-02

    *面向对象(OOP)的三大特征:**# 封装.继承.多态 继承 什么是继承 继承:# 是一种关系,描述两个对象之间什么是什么的什么的关系 例如:麦兜.佩奇.猪猪侠.猪刚鬣,都是猪 为什么要使用继承 继 ...

  9. python面向对象编程 继承 组合 接口和抽象类

    1.类是用来描述某一类的事物,类的对象就是这一类事物中的一个个体.是事物就要有属性,属性分为 1:数据属性:就是变量 2:函数属性:就是函数,在面向对象里通常称为方法 注意:类和对象均用点来访问自己的 ...

  10. Java基础——面向对象(封装——继承——多态 )

    对象 对象: 是类的实例(实现世界中 真 实存在的一切事物 可以称为对象) 类: 类是对象的抽象描述 步骤: 1.定义一个类 (用于 描述人:) ( * 人:有特征和行为) 2.根据类 创建对象 -- ...

随机推荐

  1. luence全文检索(数据库检索)

    注解:从数据库中查询所有数据然后放入luence中,然后在luence来检索 package com.zhu.demo; import java.io.IOException; import java ...

  2. 并不对劲的st表

    对于带修改的区间求和能做到O(n log n)预处理,O(log n)查询:而不带修改的可以做到O(n)预处理,O(1)查询.那么不带修改的区间最值能做到O(1)查询吗? 区间最值有这样一个性质:对于 ...

  3. luogu 3952 时间复杂度

    noip2017 D1T2 时间复杂度 某zz选手考场上写了1.5h 考完之后发现自己写的是错的 但是结果A了??? 题目大意: 一种新的编程语言 A++ 给出一个程序只有循环语句 并给出这个程序的时 ...

  4. Bug分支(转载)

    转自:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/00137602359178 ...

  5. linux下导入oracle数据表

    提前说明:这个是默认oracle已经安装好切数据库默认表空间已经创建好.之后将数据表dmp文件直接导入到默认表空间里(默认表空间不用再指定,因为创建数据库时已经指定默认表空间) linux命令如下: ...

  6. bzoj 4809: 皇后【dfs】

    爆搜卡线过 并不知道正解是啥 #include<iostream> #include<cstdio> using namespace std; const int N=40; ...

  7. 最近我总结的常用mate标签-常用mate标签

    昨天开始上班  ,今天晚上不是太忙 ,来写篇博客了 meta元素共有三个可选属性(http-equiv.name和scheme)和一个必选属性(content),content定义与 http-equ ...

  8. [Swift通天遁地]一、超级工具-(6)通过JavaScript(脚本)代码调用设备的源生程序

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  9. RT-Thread 设备驱动-硬件定时器浅析与使用

    RT-Thread 4.0.0 访问硬件定时器设备 应用程序通过 RT-Thread 提供的 I/O 设备管理接口来访问硬件定时器设备,相关接口如下所示: 函数 描述 rt_device_find() ...

  10. Linux文件详解

    一.Linux文件类型分:普通文件.目录文件.链接文件.设备文件.管道文件. 1.普通文件:由ls -al显示属性时,第一个属性为 [-],例如 [-rwxrwxrwx].包括: 纯文本文件(ASCI ...