python 组合,派生

class AddrBookEntry(object):
    "地址本"
    def __init__(self,name,phone):
        self.name=name
        self.phone=phone
        print "初始化:姓名 ",name,"电话 ",phone
    def updatePhone(self,newphone):
        self.phone=newphone;
        print "更改后电话: ",phone

#继承
class EmplAddBookEntry(AddBookEntry):
    "员工地址薄"
    def __init__(self,name,phone,employid,email):
        AddrBookEntry.__init__(self,name,phone)
        self.employid=employid
        self.email=email
    def updateEmail(self,newEmail):
        self.email=newEmail
        print "更改后Email: ",email

       
#组合
class NewAddrBookEntry(object):
    "在原先的地址本加入了组合"
    def __init__(self,name,phone):
        self.name=Name(name)
        '''Name为一个类(Name类),将其组合在地址本类中,好处:
        1.不需要重新设计地址本类,只需要将新创建的类组合进来即可
        2.代码容易维护,Name类中的代码bug被修正,将反映到地址本类中
        '''
        self.phone=Phone(phone) #Phone为一个类(Phone类),将其组合在地址本类中

 

NewAddrBookEntry类由它自身和其他类组合而成,这就在一个类和其他组成类之间定义了一种"有一个"的关系.比如,我们的NewAddrBookEntry类有一个Name类实例和一个Phone实例.

创建组合对象可以实现附加功能,因为这些类都不相同.每个类管理它们自己的名字空间和行为. 不过当对象之间有更接近的关系时,派生的概念可能对你更有意义,特别是当你需要一些相似的对象,但却有少许不同功能的时候

当类之间有显著的不同,并且(较小的类)是较大的类所需要的组件时,组合表现的很好。但当你设计"相同的类但有一些不同的功能时",派生就是一个更加合理的选择了.

posted on 2012-05-23 11:16  很多不懂呀。。  阅读(1132)  评论(0)    收藏  举报

导航