python基础练习8


学习内容:

  1. 定义Animal类,至少包含一个属性和一个方法
    2)定义Cat类、Dog类、Bird类 ,使这些类继承自Animal类
    3)定义Person类,使人可以通过Animal喂食Cat类、Dog类、的Bird类的实例。
    4)再增加一个Fish类,使人可以通过Animal类对其未食物,不能修改原有的代码。
  2. 手雷炸了:可能伤害敌人的生命
                 可能伤害玩家的生命
                 也可能伤害未知事物(摧毁房屋、庄稼、小动物等)
       要求:增加了伤害的新事物,不能改写手雷的代码
  3. 定义图形管理器类
            1. 管理所有图形
            2. 提供计算所有图形总面积的方法
    具体图形:圆形(pi * r**2)
                  矩形(长*宽)     ……
    测试:创建1个圆形对象,1个矩形对象,添加到图形管理器中,调用图形管理器的计算面积方法,输出结果。

代码实现:

1.

class Animal:
    def __init__(self,name):
        self.name = name
    def eat(self):
        print("{}在吃饭".format(self.name))
class Cat(Animal):
    def __init__(self,name):
        super().__init__(name)
class Dog(Animal):
    def __init__(self,name):
        super().__init__(name)
class Bird(Animal):
    def __init__(self,name):
        super().__init__(name)
class Person:
    def feed(self,animal):
        animal.eat()
class Fish(Animal):
    def __init__(self,name):
        super().__init__(name)
#创建实例
animal =Animal("长颈鹿")
cat = Cat("mm")
dog =Dog("ww")
bird = Bird("jj")
person = Person()
fish = Fish("yu")
#人可以通过Animal喂食Cat类、Dog类、Bird类
person.feed(cat)
cat.eat()
person.feed(dog)
dog.eat()
person.feed(bird)
bird.eat()
#Fish类,使人可以通过Animal类对其未食物
person.feed(fish)
fish.eat()

2.

class SL:
    def __init__(self,name):
        self.name = name
    def zha(self):
        print("伤害了{}的生命".format(self.name))
class Enemy(SL):
    def __init__(self,name):
        super().__init__(name)
class Player(SL):
    def __init__(self,name):
        super().__init__(name)
#实例化
sl = SL("手雷")
enemy = Enemy("dr")
player = Player("wj")
enemy.zha()
player.zha()     #增加新事物可以同上述一样继承手雷类

3.

class TUXingManger:
    def __init__(self):
        self.tux =[]
    def add_tuxing(self,tuxing):
        self.tux.append(tuxing)
    def total_square(self):
        total =0
        for tuxing in self.tux:
            total += tuxing.get_area()
        print("总面积为{}".format(total))
class TUXing:
    def get_area(self):
        pass
class Circle(TUXing):
    def __init__(self,r):
        self.r = r
    def get_area(self):
        return  math.pi * self.r**2
class Rectanle(TUXing):
    def __init__(self,l,w):
        self.l = l
        self.w = w
    def get_area(self):
        return self.l*self.w
manager = TUXingManger()
manager.add_tuxing(Circle(2))
manager.add_tuxing(Rectanle(3,6))
manager.total_square()

总结:

学习了继承以及重写,继承的时候super后一定要加()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值