多态

  • 多态


    '''
     多态: 多种形态
     在类的方法中,参数是一个父类的统称,可以接收该父类下的所有子类型。
     在方法中使用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()
    
    

     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值