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中,新建的类可以继承一个或多个父类,父类又可以称为基 ...
随机推荐
- CSS3实现文本垂直排列
最近的一个项目中要使文字垂直排列,也就是运用了CSS的writing-mode属性. writing-mode最初时ie中支持的一个属性,后来在CSS3中增添了这一新的属性,所以在ie中和其他浏览器中 ...
- Linux type命令的用法
一般情况下,type命令被用于判断另外一个命令是否是内置命令,但是它实际上有更多的用法. 1.判断一个名字当前是否是alias.keyword.function.builtin.file或者什么都不是 ...
- JVM调优总结(4):分代垃圾回收
为什么要分代 分代的垃圾回收策略,是基于这样一个事实:不同的对象的生命周期是不一样的.因此,不同生命周期的对象可以采取不同的收集方式,以便提高回收效率. 在Java程序运行的过程中,会产生大量的对象, ...
- HDU 5914 Triangle 斐波纳契数列 && 二进制切金条
HDU5914 题目链接 题意:有n根长度从1到n的木棒,问最少拿走多少根,使得剩下的木棒无论怎样都不能构成三角形. 题解:斐波纳契数列,a+b=c恰好不能构成三角形,暴力就好,推一下也可以. #in ...
- 通过jquery.validate.js校验表单字段是否合法
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...
- 【洛谷 P3203】 [HNOI2010]弹飞绵羊(LCT)
题目链接 把每个点和能跳到的点连边,于是就构成了一个森林. 查询操作就是该点到根的路径长度,修改操作就相当于删边再重新连边. 显然是\(LCT\)的强项. 查询时\(access(x),splay(x ...
- 45、如何使用python删除一个文件?
若想利用python删除windows里的文件,这里需要使用os模块!那接下来就看看利用os模块是如何删除文件的! 具体实现方法如下! os.remove(path) 删除文件 path. 如果pat ...
- webgote的例子(2)Sql注入(SearchGET)
Sql注入(Search/GET) 大家好!!! 现如今web服务在我们的网络上遍地都是,各个终端设备成为我们看不见的客户,web服务也成为公司的招牌.80 443为我们展现的视角也是多姿多彩但背后新 ...
- 2-Python基础语法-内存管理-运算符-程序控制
目录 1 Python 基础语法 1.1 注释 1.2 缩进 1.3 续行 1.4 标识符 1.5 转义序列 1.6 数字 1.7 字符串 1.8 其他 2 Python 运算符 2.1 赋值运算符 ...
- SQLite3 使用教学
source: SQL中文站:http://www.sqlite.com.cn/MySqlite/4/378.Html OS X自从10.4后把SQLite这套相当出名的数据库软件,放进了作业系统工具 ...