学习内容:
-
定义Animal类,至少包含一个属性和一个方法 2)定义Cat类、Dog类、Bird类 ,使这些类继承自Animal类 3)定义Person类,使人可以通过Animal喂食Cat类、Dog类、的Bird类的实例。 4)再增加一个Fish类,使人可以通过Animal类对其未食物,不能修改原有的代码。
-
手雷炸了:可能伤害敌人的生命 可能伤害玩家的生命 也可能伤害未知事物(摧毁房屋、庄稼、小动物等) 要求:增加了伤害的新事物,不能改写手雷的代码
-
定义图形管理器类 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后一定要加()