Python:类的继承实例

class School(object):
----def init(self,name,addr): #构造函数,用来初始化
--------self.name=name
--------self.addr=addr
--------self.staffs=[]
--------self.students=[]

----def enroll(self,stu_obj): #注册学生
--------print("为学员 %s 办理注册手续" %stu_obj.name)
---- ----self.students.append(stu_obj)

---- def hire(self, staff_obj): #雇佣老师
--------print("雇 %s 为老师" % staff_obj.name)
--------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):#新式类继承法,继承父类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) # 新式类写法,是用来解决多重继承问题的,
#在super机制里可以保证公共父类仅被执行一次,至于执行的顺序,是按照mro进行的(E.mro)。
#注意super继承只能用于新式类,用于经典类时就会报错。
#新式类:必须有继承的类,如果没什么想继承的,那就继承object
#经典类:没有父类,如果此时调用super就会出现错误:『super() argument 1 must be type, not classobj』,
--------self.stu_id=stu_id
-------- self.grade=grade

def tell(self): #介绍自己,重构父类方法
    print(‘‘‘---info of Teacher:%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_tution(self,amount):
    print("% s has paid tution for $%s" %(self.name,amount))

school=School(‘old boy1‘,‘沙河‘) #实例化一个学校
t1=Teacher("李明",33,‘F‘,15000,"Linux") #实例化一个老师
t2=Teacher("李立",23,‘M‘,12000,"python")

s1=student("王丽",19,‘F‘,1001,‘Linux‘)#实例化一个学生
s2=student("李丽明",23,‘M‘,1002,‘python‘)

school.enroll(s1) #学校注册一个学生
school.enroll(s2) #学校注册一个学生
school.hire(t1) #学校雇佣一个老师
school.hire(t2) #学校雇佣一个老师

t1.tell()
s1.tell()

print(school.students) #打印学生列表
print(school.staffs)

school.staffs[0].teach() #让老师讲课

for stu in school.students:
stu.pay_tution(5000) #交学费

原文地址:http://blog.51cto.com/3906249/2301336

时间: 10-15

Python:类的继承实例的相关文章

python类的继承

Python 类的一些基本概念 Python中一切皆对象,声明变量函数等的过程实际上就是它们到内存中为对象分配的空间的连接.Python中的类同Java.C++一样,有自己的属性与方法.属于一个对象或类的变量被称为域. 域有两种类型--属于每个实例/类的对象或属于类本身,它们分别被称为实例变量和类变量. 类的变量 由一个类的所有对象(实例)共享使用.所有对象共用一个类变量的拷贝.对象的变量 由类的每个对象/实例拥有.因此每个对象有自己对这个域的一份拷贝. 类的方法与普通的函数只有一个特别的区别-

python类的继承和多态

python类的继承和多态 现在属于是老年人的脑子,东西写着写着就忘了,东西记着记着就不知道了.之前学C++的时候就把类.对象这块弄得乱七八糟,现在是因为很想玩python,所以就看看python的类和对象. 就像说的,类有三个特征:封装.继承.多态. 1.封装:类封装了一些方法,可通过一定的规则约定方法进行访问权限. C++中的成员变量有public.private.ptotected. 在python中,默认的成员变量都是public的,如果成员变量前面是加两个下划线,表示该成员变量是私有的

C++类的继承实例

首先由三个类分别为DateType(日期类).TimeType(时间类).DateTimeType(日期时间内).具体代码如下: #include <iostream> using namespace std; class DateType { int year,month,day; public: DateType(int year = 2000,int month = 12,int day = 1) { this->year = year; this->month = mont

Inheritance Of Python 类的继承

Inheritance OOP三要素之一,继承 人类和猫都继承自动物类. 个体继承自父母,集成了父母的一部分特征. 在面向对象的世界中,从父类继承,就可以直接拥有弗雷德属性和方法,这样可以减少代码,多复用.子类可以定义自己的属性和方法. 类的继承 对于python来讲,所有的祖先都是object,所有的类都继承自object class Animal: def __init__(self, name): self._name = name @property def name(self): re

python 类定义 继承

1 定义一个时间类,带默认参数 class mytime(object): def __init__(self,hour=21, minute=13, second=50): self.hour = hour self.minute = minute self.second = second def __str__(self): return '__str__ hour:minute:second = %02d:%02d:%02d' %(self.hour,self.minute,self.se

python 类 六:继承自动寻找父类

本系列博客(python 类) 的部分例子来自于 <<python 核心编程 第二版>> 前面我们谈到 python 继承,是可以引用父类的__init__方法的 ,并在此基础上添加子类自己的特殊的属性的设定,形成子类自己的__init__  构造函数. 在这种方法中,必须显示的指出父类的名字. #coding:utf-8 class p(object):     def __init__(self,nm):         self.name  = nm class c(p):

python—类对象和实例对象的区别

最近在对RF的通讯层的模块进行封装,需要将之前放在类似main里面的一个方法,如下所示:这段代码是开发提供,用于接口测试,模拟底层通讯,具体的通讯是在dll内,python这边只是做了个封装让RF进行调用.这段通讯层的代码实质上做了五件事: 第一:加载dll: 第二:初始化dll内的通讯参数: 第三:与服务器进行连接,创建session 第四:把数据senbuffer通过sessionManger发送给服务器 第五:取得的数据返回recibuffer def testlogin(ip,port,

Python类的继承和方法重写总结

我们都知道类可以继承,通过继承可以实现代码的复用,使代码看起来更加简洁 比如: Class B(A): Pass 定义了一个名为B的类,它继承于A,我们把B叫做A的子类,A叫做B的超类(父类). 方法重写 当子类定义了一个和超类相同名字的方法时,那么子类的这个方法将覆盖超类相同的方法(或称为重写) 先借用两个例子: >>> class Bird: ...     def __init__(self): ...         self.hungry = True ...     def 

python类的继承和重写

构造方法: def __init__(self) 路径: e:/pythonpro/liuyun/class02.py #——————类的构造方法——————- class person(): name ="张翰" sex = "男" #构造方法,固定的写法:初始化类 def __init__(self,xb): self.sex = xb self.test() def test(self): print("这是test方法") d = per

python 类属性与实例属性

#__author__ = 'juzi_juzi' #类属性与实例属性 #1.无法通过类访问实例属性: #2.类属性归类所所有,但是所有实例都可访问: #3.如果存在相同名称的类属性与实例属性,实例访问的时候会优先使用实例属性,实例找不到该属性再找类属性: #4.实例修改了类属性值,但原类属性对应的值仍存在: class Test(): count = 3 # count 为类属性: def __init__(self,name,age): self.name = name #name ,age