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中,新建的类可以继承一个或多个父类,父类又可以称为基 ...
随机推荐
- Spring 源码学习(4) —— 动态AOP使用示例
在实际工作中, 此bean可能是满足业务需要的核心逻辑, 例如test()方法中可能会封装着某个核心业务, 如果在test()方法前后加入日志来跟踪调试, 直接修改源码并不符合面向对象的设计模式, 而 ...
- Win7 32位安装Oracle11g R2 图解示例
Win7 32位操作系统安装Oracle11g R2 图解示例.废话不说了,直接上图. 1.下载的两个oracle 11gR2压缩包解压到单独的文件夹中. 2.找到解压的database文件夹中的Se ...
- Oracle把本地的dmp备份文件导入到本地的Oracle数据库中语句
----------------------------------------------------------------------------- 导入语法 imp usename/passw ...
- bzoj 2375: 疯狂的涂色
2375: 疯狂的涂色 Time Limit: 5 Sec Memory Limit: 128 MB Description 小t非常喜爱画画,但是他还是一个初学者.他最近费尽千辛万苦才拜到已仙逝的 ...
- bzoj 2502 清理雪道 (有源汇上下界最小流)
2502: 清理雪道 Time Limit: 10 Sec Memory Limit: 128 MB Description 滑雪场坐落在FJ省西北部的若干座山上. 从空中鸟瞰,滑雪场 ...
- dp+分类讨论 Gym 101128E
题目链接:http://codeforces.com/gym/101128 感觉这个人写的不错的(我只看了题目大意):http://blog.csdn.net/v5zsq/article/detail ...
- 使用HttpClient4来构建Spring RestTemplate
Spring RestTemplate简单说明 现在REST服务已经很普及了,在我们的程序中,经常会需要调用REST API,这时候会有很多选择,原始一点的JDK自带的,再进一步点使用HttpClie ...
- 【NOIP】普及组2010 三国游戏
[算法]贪心 [题解]如果看重一对,先选择其中一个点,该点相邻最大的肯定被选走.所以答案就是最大的[所有点的次大连边点]啦. #include<cstdio> #include<al ...
- iOS网络基础---iOS-Apple苹果官方文档翻译
CHENYILONG Blog iOS网络基础---iOS-Apple苹果官方文档翻译 iOS网络基础 技术博客http://www.cnblogs.com/ChenYilong/ 新浪微博http: ...
- 【洛谷 P4219】 [BJOI2014]大融合(LCT)
题目链接 维护子树信息向来不是\(LCT\)所擅长的,所以我没搞懂qwq 权当背背模板吧.Flash巨佬的blog里面写了虽然我没看懂. #include <cstdio> #define ...