Pythonオブジェクト向け単純継承

2632 ワード

Pythonオブジェクト向け単純継承
 
pythonはオブジェクト向けの言語で、継承をサポートします.つまり、1つのクラスが親クラスの属性と方法を継承することができます.本書のコードは<>に由来し、コードの解読によって簡単に継承された概念を説明し、コードの注釈部分を参照してください.
# 1      V1
class Contact:
    '''       , name(  )、email(  )、      '''
    all_contacts = [] #   ,         。           ,           
    def __init__(self,name,email):
        self.name=name
        self.email=email
        #self.all_contacts=[]  #              
        Contact.all_contacts.append(self) #        。
		#self.all_contacts.append(self) #    

class Supplier(Contact):
    '''              ,      '''
    def order(self,order):
        print("'{}' ask for '{}'".format(order,self.name))
if __name__ == '__main__':
    s = Contact('Shenl','[email protected]')
    l= Contact('Liang','[email protected]')
    #print(l.all_contacts) #       
    for inner in s.all_contacts: #         name emai  
        print(inner.name+" email :"+inner.email)
    #      Contact Supplier ,  order  
    c = Supplier('Shen','[email protected]')
    c.order('i need milk')
    print("     \t"+str(len(c.all_contacts))) #  all_contacts   3   

実行結果:
Shenl email :[email protected]
Liang email :[email protected]
'i need milk' ask for 'Shen'
     	3
# 2       ,       list	
class ContactMatchList(list):
    '''                  '''
    def match(self,matchname):
        '''    name(  )             '''
        #  :1         list,    (  )list  
        # 2     list  ,    name      name(  )    
        # 3           list  
        match_contact=[]
        for i in self:
            if matchname.lower() in i.name.lower():
                match_contact.append(i)
        return match_contact

class Contact:
    '''            name,email,        '''
    all_contacts = ContactMatchList() #   ,     ContactList  
    def __init__(self,name,email):
        self.name=name
        self.email=email
        self.all_contacts.append(self)

if __name__ == '__main__':
    c = Contact('John C1','[email protected]')
    d= Contact('John D2','[email protected]')
    x = Contact('Tom X2', '[email protected]')
    #print([c.name for c in c.all_contacts.match('john')]) #          
    for c in c.all_contacts.match('john'):
        print(c.name)

実行結果:
John D2
Tom X2