python------面向对象介绍之经典类与新式类的继承顺序
一. 经典类与新式类的继承顺序

1 class A:
def __init__(self):
print("A") class B(A):
def __init__(self):
print("B") class C(A):
def __init__(self):
print("C") class D(B,C):
pass obj = D()
注:python2.x 经典类是按深度优先来继承的,新式类是按广度优先来继承的;
python3.x 经典类和新式类都是按广度优先继承的。
二. 继承实例
"""继承实例"""
class School(object):
def __init__(self,name,addr):
self.name = name
self.addr = addr
self.students = []
self.staffs = [] def enroll(self,stu_obj):
print("为学员%s 办理注册手续"% stu_obj)
self.students.append(stu_obj)
def hire(self,staff_obj):
print("雇佣新员工 %s" % staff_obj)
self.staffs.append(staff_obj) class SchoolMember(object):
def __init__(self,name,age,sex):
self.name = name
self.age = age
self.sex = sex
def tell(self):
pass class Teacher(SchoolMember):
def __init__(self,name,age,sex,salary,course):
super(Teacher,self).__init__(name,age,sex)
self.salary = salary
self.course = course
def tell(self):
print('''
------info of Teacher : %s----
Name :%s
Age :%s
Sex :%s
Salary :%s
Course :%s
'''%(self.name,self.name,self.age,self.sex,self.salary,self.course)) def teach(self):
print("%s is teaching course[%s]" %(self.name,self.course)) class Student(SchoolMember):
def __init__(self,name,age,sex,stu_id,grade):
super(Student,self).__init__(name,age,sex)
self.stu_id = stu_id
self.grade = grade
def tell(self):
print('''
------info of Student : %s----
Name :%s
Age :%s
Sex :%s
Stu_id :%s
Grade :%s
''' % (self.name, self.name, self.age, self.sex, self.stu_id, self.grade))
def pay_tuition(self,amount):
print("%s has paid tution for $%s" %(self.name,amount)) school = School("天字一号","外太空") t1 = Teacher("xiaolaizi",20,"m",20000,"english")
t2 = Teacher("zhangsan",18,"m",200,"chinese") s1 = Student("lisi",10,"f",110119,"python")
s2 = Student("wangmaiz",8,"f",110118,"C++") t1.tell()
s1.tell()
school.hire(t1)
school.enroll(s1) print(school.students)
print(school.staffs)
school.staffs[0].teach() for stu in school.students:
stu.pay_tuition(3000)
python------面向对象介绍之经典类与新式类的继承顺序的更多相关文章
- python 之 面向对象基础(继承与派生,经典类与新式类)
7.2 继承与派生 7.21继承 1.什么是继承? 继承是一种新建类的的方式,在python中支持一个子类继承多个父类.新建的类称为子类或者派生类,父类又可以称为基类或者超类,子类会”遗传“父类的属性 ...
- Python 经典类和新式类
#!/usr/bin/env python# -*- coding:utf-8 -*-# 作者:Presley# 邮箱:1209989516@qq.com# 时间:2018-10-21# 新式类和经典 ...
- python中的__new__与__init__,新式类和经典类(2.x)
在python2.x中,从object继承得来的类称为新式类(如class A(object))不从object继承得来的类称为经典类(如class A()) 新式类跟经典类的差别主要是以下几点: 1 ...
- 二十三. Python基础(23)--经典类和新式类
二十三. Python基础(23)--经典类和新式类 ●知识框架 ●接口类&抽象类的实现 # 接口类&抽象类的实现 #①抛出异常法 class Parent(object): ...
- 【python】-- 类的多继承、经典类、新式类
继承知识点补充 在python还支持多继承,但是一般我们很少用,有些语言干脆就不支持多继承,有多继承,就会带来两个概念,经典类和新式类. 一.多继承 之前我们都是讲的单继承,那么什么是多继承呢?说白了 ...
- python中经典类和新式类的区别
要知道经典类和新式类的区别,首先要掌握类的继承.类的继承的一个优点就是减少代码,而且使代码看起来结构很完整. 那什么是经典类,什么是新式类呢? 经典类和新式类的主要区别就是类的继承的方式 ,经典类遵循 ...
- Python【经典类与新式类】
经典类多继承的调用方法顺序是:深度优先查询,如下图: 新式类多继承的调用方法顺序是:广度优先查询,如下图: 可以使用下面的代码进行实验验证: #经典类class A: def __init__ ...
- python基础--类的经典类vs新式类
经典类VS新式类区别 1)写法新式类class Person(object):#new style 经典类class Persion: #classical style 2)调用父类 新式写法用sup ...
- python学习笔记(二十六)经典类和新式类的区别
首先了解一下什么是经典类,什么是新式类 class Person: #经典类 pass class Person2(object): #新式类 pass #类名首字母都大写 #在python3里面经典 ...
随机推荐
- bzoj3879
题解: 后缀数组 然后把读入的内容去重,按照rank排序 然后用单调栈处理一下 代码: #include<bits/stdc++.h> using namespace std; typed ...
- hustoj 管理员和后台设置
之前用过hustoj 的livecd版本,觉得有一些小问题,所以从头到尾搭建.主要包含的过程包括: 安装ubuntu系统 搭建hustoj 管理员和后台资源建设 本文介绍如何在搭建好hustoj的基础 ...
- VSTO:使用C#开发Excel、Word【3】
<Visual Studio Tools for Office: Using C# with Excel, Word, Outlook, and InfoPath >——By Eric C ...
- jdk8-stream的api
1.stream流的概念 1.流的创建 //1. 创建 Stream @Test public void test1(){ //1. Collection 提供了两个方法 stream() 与 par ...
- FPGA的GTP(aurora 协议)高速串行接口数据收发(转)
reference:https://blog.csdn.net/qq_40261818/article/details/83039829 PG046-Aurora 8B/10B Logicore I ...
- Centos7部署Flannel网络(八)
1.为Flannel生成证书 [root@linux-node1 ssl]# vim flanneld-csr.json { "CN": "flanneld", ...
- Java进程和线程
进程是资源分配和任务调度的基本单位, 进程就是包含上下文切换的程序执行时间总和=CPU加载上下文环境+CPU执行+CPU保存上下文环境,可以理解为时间片段: 进程的颗粒度太大了,将进程分块,按照a,c ...
- nginx配置文服
修改nginx.conf 添加如下内容 autoindex on; # 显示目录 autoindex_exact_size on; # 显示文件大小 autoindex_localtime on; # ...
- Oracle表的操作
--创建表 CREATE [GLOBAL TEMPORARY] TABLE table_name( coloum_name TYPE [CONSTRAINT constraint_def DEFAUL ...
- L230 RF可靠性测试-RF指标
最近调试Zigbee 和2.4G产品时需要做一些认证,查找到常用的RF指标. ----------http://www.52rd.com/S_TXT/2016_5/TXT83303.htm------ ...