深度优先与广度优先
#coding=utf-8
class people(object):
# def __init__(self):
# self.age = 45
# print('People')
def sleep(self):
print(123)
class Relation(object):
def __init__(self):
print('Relation')
class Man(people,Relation):
def __init__(self):
super(Man,self).__init__() #这里继承了两个类,但是只会执行people的构造方法,不会执行relation的,如果people没有构造函数就走relation
def sleep(self):
#people.sleep(self)
super(Man,self).sleep()
print(456)
# a = Man()
# a.sleep()
#深度优先于广度优先
"""
python2中经典类是深度优先,新式类是广度优先,python3中都是广度优先
"""
class A(object):
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):
# def __init__(self):
# pass
"""
深度优先:若D没有初始化函数,先去找B,B也没有去找A,A也没有再找C
广度优先:若D没有初始化函数,先去找B,B也没有去找C,C也没有去找A
"""
#coding=utf-8
"""
新式类与旧式类的一个有区别的地方,主要表现在多个类继承上,
新式类遵循的是广度优先,而旧式类遵循的是深度优先
python2中经典类按照深度优先继承的,
pyhton3中,经典类和新式都是按照广度优先继承的
"""
#class people: #经典类
class people(object): #新式类
def __init__(self,name,age):
self.name = name
self.age = age
def eat (self):
print '%s is rating'%self.name
def talk(self):
print '%s is talking'%self.name
def sleep(self):
print '%s is sleeping'%self.name
class Relation(object):
def make_friends(self,obj):
print '%s like %s'%(self.name,obj)
class Man(people,Relation):
def __init__(self,name,age,money):
#people.__init__(self,name,age)
super(Man,self).__init__(name,age) #新式类写法
self.money = money
def play_game(self):
print '%s is playing game'%self.name
def sleep(self):
people.sleep(self) #重写父类方法
print 'man is sleep'
class Woman(people,Relation):
def song(self):
print '%s is sing a song'%self.name
man = Man('zq','25','1500')
man.sleep()
class School(object):
def __init__(self,name,addr):
self.name = name
self.addr = addr
self.student =[]
self.teacher =[]
def enroll(self,stuobj):
print 'service for%s'%stuobj.name
self.student.append(stuobj)
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):
super(tell,self).tell()
print '''info of teacher:%s'
name: %s
age:%s
salary:%s
course:%s
'''%(self.name,self.name,self.age,self.salary,self.course)
def teach(self):
print '%s is teaching '%self.name
class Student(SchoolMember):
def __init__(self,name,age,sex,schoolid,course):
super(Student, self).__init__(name,age,sex)
self.id = schoolid
self.course = course
def tell(self):
print '''info of student:%s'
name: %s
age:%s
id:%s
course:%s
'''%(self.name,self.name,self.age,self.schoolid,self.course)