Python面向对象 三大特性 综合案例+1(视频里的作业)

class Dog:
# 在创建一个小狗实例的时候,给它设置几个属性
def __init__(self, name, age = 1):
self.name = name
self.age = age

def eat(self):
# print("名字是%s,年龄%d岁的小狗在吃饭"%(self.name,self.age))
print("%s吃饭" % self)
return self

def play(self):
print("%s玩" % self)
return self

def sleep(self):
print("%s睡觉" % self)
return self

def watch(self):
print("%s看家"%self)

def __str__(self):
# self对象本身对字符串的一个描述
return "名字是{},年龄{}岁的小狗在".format(self.name, self.age)

class Cat:
# 在创建一个小狗实例的时候,给它设置几个属性
def __init__(self, name, age = 1):
self.name = name
self.age = age

def eat(self):
print("%s吃饭" % self)
return self

def play(self):
print("%s玩" % self)
return self

def sleep(self):
print("%s睡觉" % self)
return self

def catch(self):
print("%s捉老鼠"%self)

def __str__(self):
# self对象本身对字符串的一个描述
return "名字是{},年龄{}岁的小猫在".format(self.name, self.age)

class Person:
# 在创建一个小狗实例的时候,给它设置几个属性
def __init__(self, name, pets, age = 1):
self.name = name
self.age = age
self.pets = pets
def eat(self):
print("%s吃饭" % self)
return self

def play(self):
print("%s玩" % self)
return self

def sleep(self):
print("%s睡觉" % self)
return self

def feed_pets(self):
for pet in self.pets:
pet.eat()
pet.sleep()
pet.play()

def make_pets_work(self):
for pet in self.pets:
if isinstance(pet, Dog):
pet.watch()
elif isinstance(pet, Cat):
pet.catch()
def __str__(self):
# self对象本身对字符串的一个描述
return "名字是{},年龄{}岁的人在".format(self.name, self.age)
d = Dog("小黑",18)
c = Cat("小红",2)
p = Person("BruceLong", [d, c], 24 )
p.feed_pets()
p.make_pets_work()
posted @ 2018-04-16 23:21  BruceLong  阅读(379)  评论(0编辑  收藏  举报