Python类总结-继承-子类和父类,新式类和经典类
子类和父类
class Father(object): #子类在使用super调用父类时,Father后面要加object --新式类
def __init__(self):
self.Fname = 'ffff'
print('Father.init')
def Func(self):
print('father.Func')
def Bad(self):
print('father.抽烟喝酒烫头')
class Son(Father): #子类继承了父类/基类和派生类
def __init__(self):
self.Sname = 'sssss'
print('Son.init')
Father.__init__(self) #子类实例化的时候调用父类的__init__,经典类
super(Son, self).__init__() #使用super调用父类的__init__,新式类继承object
#新式类比经典类多更多属性__slot__
def Bar(self):
print('son.Bar')
# 重写父类Bad方法
# def Bad(self):
# print('son.抽烟喝酒')
#扩展父类的方法
def Bad(self):
Father.Bad(self) #调用父类的Bad方法
print('son.赌博')
s1 = Son()
s1.Bar()
s1.Func()#调用父类的方法
print('---------------')
s1.Bad()
新式类和经典类
https://docs.python.org/release/2.2.3/whatsnew/sect-rellinks.html#SECTION000310000000000000000
推荐使用新式类__name__, __slot__, __file__, __doc__
继承顺序的改变
多继承时, 经典类深度优先, 新式类广度优先
class A:
^ ^ def save(self): ...
/ \
/ \
/ \
/ \
class B class C:
^ ^ def save(self): ...
\ /
\ /
\ /
\ /
class D
D应该继承C的save方法, 但是经典类发生多继承时, 会优先找到A
classB和C都继承A
classD继承(B,C),经典类深度优先,故先找到A
新式类就是在Class A(object)
#代码实现如下,需要使用Python2.7编译经典类,当classA添加(object)后即变为新式类
class A:
def __init__(self):
print('this from A class')
def save(self):
print('this is A save')
class B(A):
def __init__(self):
print('this from B class')
class C(A):
def __init__(self):
print('this from C class')
def save(self):
print('this is C save')
class D(B,C): #多继承,B,C位置有关系
def __init__(self):
print('this from D class')
f1 = D()
f1.save()
Python类总结-继承-子类和父类,新式类和经典类的更多相关文章
- C++ 学习笔记 (六) 继承- 子类与父类有同名函数,变量
学习了类的继承,今天说一下当父类与子类中有同名函数和变量时那么程序将怎么执行.首先明确当基类和子类有同名函数或者变量时,子类依然从父类继承. 举例说明: 例程说明: 父类和子类有同名的成员 data: ...
- python面向对象的三大特征--继承子类调用父类方法
#在子类中调用父类方法 class Vehicle: country="China" def __init__(self,name,speed,load,power): self. ...
- Java基础-继承-子类与父类执行顺序
代码 public class Test { public static void main(String[] args) { new Circle(); } } class Draw { publi ...
- java继承 子类重写父类方法
package com.addd; //多态 public class Sld { private String name = "zhangsan"; public Sld() { ...
- java继承-子类调用父类的方法中包含子类重写的方法
# 看题目是不是很绕,这个我也不知道怎么才能更简单的表达了... # 先看代码: public class Common { public static void main(String[] args ...
- PHP - 继承 - 子类使用父类方法
<?php class ShopProduct { private $FirstName; private $LastName; private $Title; private $Price; ...
- 【python系统学习14】类的继承与创新
目录: 目录: [toc] 类的继承 子类和父类 继承的写法 继承示例 父类可以被无限个子类所继承 子类实例可调用父类属性和方法 类的始祖(根类) 根类 - object 实例归属判断 - isins ...
- 【python】-- 类的继承(新式类/经典类)、多态
继承 之前我们说到了类的公有属性和类的私有属性,其实就是类的封装,现在准备随笔的 是继承,是面向对象的第二大特性. 面向对象编程 (OOP) 语言的一个主要功能就是“继承”.继承是指这样一种能力:它可 ...
- 面向对象:继承(经典类&新式类继承原理、属性查找)、派生
继承: 继承是指类与类之间的关系,是一种“什么”是“什么”的关系. 继承的功能之一就是用来解决代码重用问题 继承是一种创建新类的方式,在Python中,新建的类可以继承一个或多个父类,父类又可以称为基 ...
随机推荐
- OpenCV---模板匹配matchTemplate
作用有局限性,必须在指定的环境下,才能匹配成功,是受到很多因素的影响,所以有一定的适应性 模板匹配是一种最原始.最基本的模式识别方法,研究某一特定对象物的图案位于图像的什么地方,进而识别对象物,这就是 ...
- [LeetCode] 28. Implement strStr() ☆
Implement strStr(). Returns the index of the first occurrence of needle in haystack, or -1 if needle ...
- Linux 下 JDK + Eclipse + PyDev 安装与配置
一:JDK / JRE 环境 Eclipse 是运行于Java虚拟机中的,所以必须先安装Java环境才能进行开发测试.JRE(Java Runtime Environment)是运行环境,JDK(Ja ...
- jquery键盘事件全记录
很多时候,我们需要获取用户的键盘事件,下面就一起来看看jquery是如何操作键盘事件的. 一.首先需要知道的是: 1.keydown() keydown事件会在键盘按下时触发. 2.keyup() k ...
- ADO.NET中带参数的Sql语句的陷阱
1.使用Parameter //利用构造函数方式 ,不推荐这样写 Parameter p =new Parameter("@id",值); cmd.Parameters.Add(p ...
- POJ 3233 Matrix Power Series (矩阵快速幂)
题目链接 Description Given a n × n matrix A and a positive integer k, find the sum S = A + A^2 + A^3 + - ...
- linux——vi和vim的区别
vi 和vim 的区别 它们都是多模式编辑器,不同的是vim 是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面. vim的这些优势主要体现在以下几个方面:1.多级撤消我们知道 ...
- Lucene7.2.1系列(二)luke使用及索引文档的基本操作
系列文章: Lucene系列(一)快速入门 Lucene系列(二)luke使用及索引文档的基本操作 Lucene系列(三)查询及高亮 luke入门 简介: github地址:https://githu ...
- rabbitmq和kafka怎么选?【转】
MQ框架非常之多,今天简单说一下有代表性的两个MQ(rabbitmq和kafka).经常会有人问rabbitmq和kafka到底哪个好呢?其实没有好与不好之分,只有哪个更合适,首先要根据自己项目的业务 ...
- Elasticsearch5.0 安装问题集锦【转】
转自 Elasticsearch5.0 安装问题集锦 - 代码&优雅着&生活 - 博客园http://www.cnblogs.com/sloveling/p/elasticsearch ...