多態

  • 多態


    '''
     多態: 多種形態
     在類的方法中,參數是一個父類的統稱,可以接收該父類下的所有子類型。
     在方法中使用isinstance(對象,類別)進行類別的判斷
    
     isinstance(對象,類別)函數的返回值是:bool
    
    '''
    
    
    class PetShop:
        def __init__(self, name):
            self.name = name
            self.pets = set()
    
        def add_pet(self, pet):  # pet=phone  pet=cat  pet=dog  pet=rabit
            # 使用isinstance判斷類型
            if isinstance(pet, Pet):
                self.pets.add(pet)
                print('添加成功!')
            else:
                print('不是寵物,不收!')
    
        def sale_pet(self, pet):
            pass
    
        def show_pet(self):
            for pet in self.pets:
                print(pet)
    
    
    # 將共同的特徵提取到父類中
    class Pet:
        def __init__(self, id, nickname, color):
            self.id = id
            self.nickname = nickname
            self.color = color
    
        def __str__(self):
            return self.nickname
    
    
    class Dog(Pet):
        type = '狗'
    
        def see_house(self):
            print('小狗的特長就是看家....')
    
    
    class Cat(Pet):
        type = '貓'
    
        def catch_mouse(self):
            print('小貓的特長就是抓大老鼠....')
    
    
    class Phone:
        def __init__(self, brand, price):
            self.brand = brand
            self.price = price
    
        def __str__(self):
            return self.brand
    
    
    shop = PetShop('愛寵寵物商店')
    
    phone = Phone('華爲', 3999)
    shop.add_pet(phone)
    
    dog1 = Dog(1, '大黃', '黃色')
    shop.add_pet(dog1)
    
    cat1 = Cat(2, '花花', '灰色')
    shop.add_pet(cat1)
    #
    # phone1 = Phone('oppo', 1999)
    # shop.add_pet(phone1)
    
    # 遍歷打印所有的寵物
    shop.show_pet()
    
    

     

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章