宠物商店 继承关系

继承:

定义一个父类
定义子类继承父类
A. 继承父类非私有的属性和方法
B. 如果子类定义了一个跟父类相同属性,先找子类的属性,然后找父类
C. 如果父类与子类有相同方法,则认为子类重写了此方法(重写:override 覆盖)
1.单继承:
所有的类默认继承object
继承其他父类的方式: class 子类(父类): pass
2. 继承了父类的非私有的属性和方法
3. 重写:父类的方法不能满足子类的需求,则定义一个跟父类名字相同的方法
每次对象调用则优先调用子类的
4. 子类方法中调用父类的方法:
方式1: Father.func(self,n)
方式2: super(Son, self).func(n)

多继承:
多继承的查找顺序:
经典类: 深度优先()
新式类: C3算法
MRO原则:
类.mro 查看顺序
print(Son.mro)> ()
print(Son.mro())> []

一个类继承和调用的小代码:

class PetShop:
    def __init__(self, name):
        self.name = name
        self.pets = set()

    # 动作
    def save_pet(self, pet):
        # print(isinstance(pet, Pet))
        if isinstance(pet, Pet):
            self.pets.add(pet)
            print('添加成功!')
        else:
            print('不是宠物不收留!')

    def sale_pet(self, pet):
        if isinstance(pet, Pet):
            self.pets.discard(pet)
            print('宠物减少')
        else:
            print('不是宠物不收留!')

    # 查找宠物
    def search_pet(self, pname):
        for pet in self.pets:
            if pname == pet.pname:
                print('宠物在商店里')
                break
        else:
            print('不存在此宠物!')

    # 显示所有的宠物
    def all_pets(self):
        print('宠物商店所有的宠物信息如下:')
        for pet in self.pets:
            print(pet)


class Pet:
    type = '宠物'

    def __init__(self, pname, color, age):
        self.pname = pname
        self.color = color
        self.age = age

    def __str__(self):
        return '当前类型是:{},宠物名:{}'.format(self.type, self.pname)


class Dog(Pet):
    type = '狗'

    def see_house(self):
        print('特长看家...')


class Cat(Pet):
    type = '猫'

    def catch_mouse(self):
        print('特长抓老鼠....')


class Bird:
    pass


# 创建对象
shop = PetShop('爱宠')

# pet = Pet()
cat = Cat('花花', '黄色', 2)
bird = Bird()
shop.save_pet(cat)  # pet =cat
dog = Dog('大黄', '棕色', 3)
shop.save_pet(dog)

shop.all_pets()

shop.search_pet('花')


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值