#!/usr/bin/env python3
# -*- coding: utf-8 -*-
'多重继承'
__author__ = 'HZF'
class MuObj(object):
def __init__(self,name):
self.name = name
@property
def mclass(self):
return self.__class__.__name__
@property
def name(self):
return self.__name
@name.setter
def name(self,name):
if not isinstance(name,str):
raise ValueError('name must be a string!')
for c in name:
if c in ',. \'\"*\r\t\n\\\/':
raise ValueError('name con\'t have special character:[%s]'%c)
self.__name = name
class Biology(MuObj):
def __init__(self,name,age=0):
self.name = name
self.age = age
@property
def age(self):
return self.__age
@age.setter
def age(self,age):
if not isinstance(age,int):
raise ValueError('age must be an integer!')
if age<0:
raise ValueError('age must not less than 0!')
self.__age = age
class RunnableMixIn(MuObj):
def run(self):
print('%s %s is running...' %(self.mclass,self.name))
class FlyableMixIn(MuObj):
def fly(self):
print('%s %s is flying...' %(self.mclass,self.name))
class Animal(Biology,RunnableMixIn):
def __init__(self,name,age=0):
Biology.__init__(self,name,age)
class Bird(Animal,FlyableMixIn):
def __init__(self,name,age=0):
Animal.__init__(self,name,age)
bird = Bird('bird',1)
bird.run()
bird.fly()
print(bird.mclass)
ani = Animal('Dog',3)
ani.run()
#'Animal' object has no attribute 'fly'
#ani.fly()
ani.__class__ = Bird
print(type(ani),ani.mclass,ani.name)
ani.run()
ani.fly()
#python自带的网络服务
#TCPServer and UDPServer
#python自带的多进程、多线程模型
#ForkingMixIn and ThreadingMixIn
#通过组合,我们就可以创造出合适的服务来。
久疤_796