python深入之面向对象三大特性综合案例

案例一:人,猫,狗

案例描述:

案例代码实现:

# 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()

其中实现了面向对象三大特性,同时,实现了有重叠多继承的形态,解决属性和方法相互交织情况下的继承方法,大大简化了程序代码

猜你喜欢

转载自blog.csdn.net/zx870121209/article/details/81432936