案例说明:
# 定义三个类,小狗、小猫、人
# 小狗:姓名、年龄(默认1岁);吃饭、玩、睡觉、看家。(格式:名字是xx,年龄xx岁的小狗在xx)
# 小猫:姓名、年龄(默认1岁);吃饭、玩、睡觉、捉老鼠。(格式:名字是xx,年龄xx岁的小猫在xx)
# 人:姓名、年龄(默认1岁)、宠物;吃饭、玩、睡觉、捉老鼠。(格式:名字是xx,年龄xx岁的小猫在xx)
# 养宠物(让所有的宠物吃饭、玩、睡觉)
# 让宠物工作(让所有的宠物根据自己的职责开始工作)
怎样通过代码来解决问题呢?
有开发经验:遇到问题,根据自己的开发经验,制定出,一套自以为完美的解决方案。通过代码去实现这个方法。
无开发经验:
有进取心:遇到问题,直接通过代码来实现能够想到的问题。之后检测发现代码问题,重构代码,不断的去升级方案
无进取心:遇到问题,直接通过代码来实现能够想到的问题。
# # 版本1.5 # class Person: # # 在创建一个小狗实例的时候,给他设置几个属性。 # def __init__(self, name, pets, age=1,): # self.name = name # self.age = age # self.pets = pets # # def eat(self): # print("%s在吃饭" % self) # # def play(self): # print("%s在玩" % self) # # def sleep(self): # print("%s在睡觉" % self) # # def yangPets(self): # for pet in self.pets: # pet.eat() # pet.play() # pet.sleep() # # def make_pets_work(self): # for pet in self.pets: # pet.work() # # def __str__(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) # # def play(self): # print("%s在玩" % self) # # def sleep(self): # print("%s在睡觉" % self) # # def work(self): # print("%s在捉老鼠" % self) # # def __str__(self): # return "名字是{},年龄{}岁的小猫".format(self.name, self.age) # # class Dog: # # 在创建一个小狗实例的时候,给他设置几个属性。 # def __init__(self, name, age=1): # self.name = name # self.age = age # # def eat(self): # print("%s在吃饭" % self) # # def play(self): # print("%s在玩" % self) # # def sleep(self): # print("%s在睡觉" % self) # # def work(self): # print("%s在看家" % self) # # def __str__(self): # return "名字是{},年龄{}岁的小狗".format(self.name, self.age) # # # d = Dog("小黑", 100) # c = Cat("小红", 123) # p = Person("果果", [d, c], 200) # # p.yangPets() # p.make_pets_work() # -----------------------------------------------------通过继承来优化代码最终版本--------------------------------------- class Animal: def __init__(self, name, age=1): self.name = name self.age = age def eat(self): print("%s在吃饭" % self) def play(self): print("%s在玩" % self) def sleep(self): print("%s在睡觉" % self) class Person(Animal): def __init__(self,name, pets, age=1): super(Person, self).__init__(name, age) self.pets = pets def yang_pets(self): for pet in self.pets: pet.eat() pet.play() pet.sleep() def make_pets_work(self): for pet in self.pets: pet.work() def __str__(self): return "名字是{},年龄{}岁的小孩".format(self.name, self.age) class Cat(Animal): def work(self): print("%s在捉老鼠" % self) def __str__(self): return "名字是{},年龄{}岁的小猫".format(self.name, self.age) class Dog(Animal): def work(self): print("%s在看家" % self) def __str__(self): return "名字是{},年龄{}岁的小狗".format(self.name, self.age) d = Dog("小黑", 100) c = Cat("小红", 123) p = Person("果果", [d, c], 200) p.yang_pets() p.make_pets_work()