Discuss / Python / 本章的作用感觉一切都是为了方便多态啊!

本章的作用感觉一切都是为了方便多态啊!

Topic source

比如有一个Student类,有两个子类:一种是男同学,一种是女同学,继承关系如下:

class Student(object):
    pass
class Male_Student(Student):
    pass
class Female_Student(Student):
    pass

如果你是个裁缝,现在要做校服。校服分男女,可是纽扣啊,拉链啊什么的是一样的,所以可以把这些一样的元素都写在父类里,子类只写一些男女有别的代码。但是你并不满足死板的校服样式(说实话中国的校服确实是丑- -),想临时天马行空地在哪里加一块花纹、装饰等,这时可以直接通过hasattr,getattr,setattr直接设置。

#多态函数xiaofu
def xiaofu(Student):
    #小花纹改大花纹
    if hasattr(Student,'小花纹'):
        setattr(Student,'小花纹','大花纹')
    #如果你觉得原版校服口袋不好看,可以自己写一个改口袋款式的函数
   def new_koudai(koudai):
           处理koudai代码...
           return koudai

   koudai = new_koudai(getattr(Student,'口袋'))
   setattr(Student,'口袋',koudai)

总之呢,这篇文章给我的感受就是可以让实现多态的同时有更多的自由DIY,你想用别人的类和方法但是你并不满足现有的功能,想自己DIY的话,这篇文章就告诉你该如何去做!


  • 1

Reply