案例一:人,猫,狗
案例描述:
案例代码实现:
# 0 创建父类--动物 class Animal(object): 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 __str__(self, char): return "名字是%s,年龄%d岁的%s在" % (self.name, self.age, char) # 1 创建三个类 # 1.1 创建人类 class Person(Animal): def __init__(self, name, pets, age=1): super().__init__(name, age) self.pets = pets def yangChongWu(self): for pet in self.pets: pet.eat() pet.play() pet.sleep() def petsWork(self): for pet in self.pets: pet.work() def __str__(self): return super().__str__("人") # 1.2 创建狗类 class Dog(Animal): def work(self): print("%s看家" % self) def __str__(self): return super().__str__("小狗") # 1.3 创建猫类 class Cat(Animal): def work(self): print("%s捉老鼠" % self) def __str__(self): return super().__str__("小猫") # 2 业务代码 d = Dog("小黑", 3) c = Cat("小黄", 4) p = Person("zx", [d, c], 18) p.yangChongWu() p.petsWork() p.eat() d.eat() c.eat()
其中体现了面向对象的三大特性:1.封装,即将属性和方法封装到类对象中;2.继承,即人、猫和狗类都继承了动物类的属性和方法;3.多态,即动物类衍生出了人类‘猫类和狗类三种形态,且动物类中的同一种方法在调用时,传入的self是什么类型的实例,就执行其对应的行为,实现了两种形式的多态
案例二:学生、组长、教师
案例描述:
案例实现代码:
建父类 0.0 创建第零个父类 class Father0(object): def __init__(self, name, age): self.name = name self.age = age def eat(self): print("%s吃饭" % self) def sleep(self): print("%s睡觉" % self) # 0.1 创建第一个父类 class Father1(Father0): def __init__(self, name, age, sid): Father0.__init__(self, name, age) self.sid = sid def study(self): print("%s学习" % self) # 0.2 创建第二个父类 class Father2(Father0): def __init__(self, name, age, job): Father0.__init__(self, name, age) self.job = job def teach(self): print("%s教学" % self) def manage(self): print("%s管理" % self) # 1 创建三个类:学生、组长、教师 # 1.1 创建学生类 class Student(Father1): def __str__(self): return "学生名是%s,学号为%d,其%d岁,正在" % (self.name, self.sid, self.age) # 1.2 创建组长类 class Header(Father1, Father2): def __init__(self, name, age, sid, job): Father1.__init__(self, name, age, sid) Father2.__init__(self, name, age, job) def __str__(self): return "%s名是%s,学号为%d,其%d岁,正在" % (self.job, self.name, self.sid, self.age) # 1.3 创建教师类 class Teacher(Father2): def __str__(self): return "%s名是%s,其%d岁,正在" % (self.job, self.name, self.age) # 2 业务执行代码 s = Student("zx", 18, 201771330) h = Header("zx", 18, 201771330, "组长") t = Teacher("zx", 18, "教师") s.sleep() s.eat() s.study() h.manage() h.eat() h.sleep() h.study() t.teach() t.manage() t.eat() t.sleep()
其中实现了面向对象三大特性,同时,实现了有重叠多继承的形态,解决属性和方法相互交织情况下的继承方法,大大简化了程序代码