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中,新建的类可以继承一个或多个父类,父类又可以称为基 ...
随机推荐
- Java的StringAPI的小练习
//-------------String类-------------- //求两个字符串的最大相同子串 /* 思路: 1.找出较短的那个字符串 2.找出短串的所有子串,使用contains函数判断是 ...
- 【VSCode】Windows下VSCode编译调试c/c++【更新 2018.03.27】
--------– 2018.03.27 更新--------- 便携版已更新,点此获取便携版 已知BUG:中文目录无法正常调试 用于cpptools 0.15.0插件的配置文件更新 新的launch ...
- 维护前面的position+主席树 Codeforces Round #406 (Div. 2) E
http://codeforces.com/contest/787/problem/E 题目大意:给你n块,每个块都有一个颜色,定义一个k,表示在区间[l,r]中最多有k中不同的颜色.另k=1,2,3 ...
- [译]Quartz.Net 框架 教程(中文版)2.2.x 之第三课 更多关于Jobs和JobDetails
第三课 更多关于Jobs和JobDetails 在这二课我们已经学习到,Jobs接口非常容易实现,只有一个execute方法.我们需要再学习一些知识去理解jobs的本质,Job接口的execute方法 ...
- 【CodeForces】960 F. Pathwalks 主席树+动态规划
[题目]F. Pathwalks [题意]给定n个点m条边的有向图,可能不连通有重边有自环.每条边有编号 i 和边权 wi ,求最长的路径(可以经过重复节点)满足编号和边权都严格递增.n,m,wi&l ...
- 【CodeForces】704 B. Ant Man
[题目]B. Ant Man [题意]给定n个人的xi,ai,bi,ci,di,起点为s,终点为e,移动: In simpler words, jumping from i-th chair to j ...
- C# 操作资源文件
(1)首先引用这两个命名空间 (2)两种方式调用资源文件中的内容 private void button2_Click(object sender, EventArgs e) { //通过Resour ...
- THINKPHP简单商品查询项目
代码:http://files.cnblogs.com/files/wordblog/test.zip
- layui利用jQuery设置下拉列表的值
今天在利用jQuery动态设置下拉列表的值的时候确怎么也赋值不上去,其中用到了layui框架,源代码如下: $.post(contextPath+'/courseLibrary/getCourseBa ...
- 笔记本自开wifi设置
笔记本自开wifi设置 是这样的有些笔记本他自身就可以放出热点供其他的小伙伴们连接,不用非得去下专门的工具有些笔记本的网卡是自带支持双收发的(这里注意我指的是有些笔记本不是全部) 命令我已经写出来了 ...